{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "n=10000\n",
    "m=10\n",
    "p=3 #Barabasi-Albert parameter\n",
    "init_Theta=0.05#0.06\n",
    "N=10 #number of time steps\n",
    "r=0 #0.3 #szansa aktywacji przy negatywnej korelacji\n",
    "prob=0.20 #prawd. aktywności użytkownika w danej epidemii (do generaowania macierzy)\n",
    "a=0.15#0.04 # parameter kształtu powr-law"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.Undirected graph done!\n",
      "2.Directed graph done!\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "944d07ee8aad48f98e777d08d9870ef7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/html": [
       "<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
       "<p>\n",
       "  If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n",
       "  that the widgets JavaScript is still loading. If this message persists, it\n",
       "  likely means that the widgets JavaScript library is either not installed or\n",
       "  not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
       "  Widgets Documentation</a> for setup instructions.\n",
       "</p>\n",
       "<p>\n",
       "  If you're reading this message in another notebook frontend (for example, a static\n",
       "  rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
       "  it may mean that your frontend doesn't currently support widgets.\n",
       "</p>\n"
      ],
      "text/plain": [
       "HBox(children=(IntProgress(value=0, max=59982), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "3.Wieghts assigned!\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1b5c7cbc25a84ca9a20fbce62396e768",
       "version_major": 2,
       "version_minor": 0
      },
      "text/html": [
       "<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
       "<p>\n",
       "  If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n",
       "  that the widgets JavaScript is still loading. If this message persists, it\n",
       "  likely means that the widgets JavaScript library is either not installed or\n",
       "  not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
       "  Widgets Documentation</a> for setup instructions.\n",
       "</p>\n",
       "<p>\n",
       "  If you're reading this message in another notebook frontend (for example, a static\n",
       "  rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
       "  it may mean that your frontend doesn't currently support widgets.\n",
       "</p>\n"
      ],
      "text/plain": [
       "HBox(children=(IntProgress(value=0, max=10000), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "4.Wieghts normalized!\n",
      "4.Adjacency (sparse) matrix created!\n"
     ]
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import copy\n",
    "import math\n",
    "import pandas as pd\n",
    "import matplotlib\n",
    "import numpy as np\n",
    "np.set_printoptions(threshold=np.nan)\n",
    "import matplotlib.pyplot as plt\n",
    "from tqdm import tqdm_notebook as tqdm\n",
    "import networkx as nx\n",
    "import scipy.sparse as sparse\n",
    "import asizeof\n",
    "from collections import defaultdict\n",
    "G=nx.barabasi_albert_graph(n, p)\n",
    "print('1.Undirected graph done!')\n",
    "G=G.to_directed()\n",
    "print('2.Directed graph done!')\n",
    "for u,v in tqdm(G.edges()):\n",
    "    G[u][v]['weight']=1.0#np.random.uniform(0,1)\n",
    "print('3.Wieghts assigned!')\n",
    "for i in tqdm(range(n)):\n",
    "    in_degree=G.in_degree(i,weight='weight')\n",
    "    for u,v in G.in_edges(i):\n",
    "        #print(u,v,G[u][v]['weight'],G[u][v]['weight'] / in_degree, in_degree)\n",
    "        G[u][v]['weight']/=in_degree\n",
    "print('4.Wieghts normalized!')\n",
    "W=nx.adjacency_matrix(G,weight='weight')\n",
    "print('4.Adjacency (sparse) matrix created!')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.994266497306 1.0 0.110504583142 0.2423320624\n",
      "Correlation matrix done!\n"
     ]
    }
   ],
   "source": [
    "C = np.random.random((m, m))\n",
    "C=C*2-1\n",
    "C *= np.tri(*C.shape,k=-1)\n",
    "C=C+np.transpose(C)+np.eye(m)\n",
    "print(C.min(),C.max(),C.mean(),np.median(C))\n",
    "print(\"Correlation matrix done!\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "aa394974590a463196ffd55cd9e77f21",
       "version_major": 2,
       "version_minor": 0
      },
      "text/html": [
       "<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
       "<p>\n",
       "  If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n",
       "  that the widgets JavaScript is still loading. If this message persists, it\n",
       "  likely means that the widgets JavaScript library is either not installed or\n",
       "  not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
       "  Widgets Documentation</a> for setup instructions.\n",
       "</p>\n",
       "<p>\n",
       "  If you're reading this message in another notebook frontend (for example, a static\n",
       "  rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
       "  it may mean that your frontend doesn't currently support widgets.\n",
       "</p>\n"
      ],
      "text/plain": [
       "HBox(children=(IntProgress(value=0, max=10), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Initial state assigned!\n"
     ]
    }
   ],
   "source": [
    "indykatory=[]\n",
    "frakcje=[]\n",
    "import scipy.stats as stats\n",
    "frac_inf=np.ceil(stats.powerlaw.rvs(a,size=(m))*n).astype(int)\n",
    "I=np.full((n, m), False, dtype=bool)\n",
    "for i in tqdm(range(m)):\n",
    "    I[np.ix_(stats.randint.rvs(0, n-1, size=frac_inf[i]),[i])]=True\n",
    "indykatory.append(I)\n",
    "frakcje.append(np.vstack((range(m),np.sum(I,axis=0)/n)))\n",
    "I=copy.deepcopy(I)\n",
    "print(\"Initial state assigned!\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initial Theta assigned!\n"
     ]
    }
   ],
   "source": [
    "Theta=np.full((n,m), init_Theta)\n",
    "print(\"Initial Theta assigned!\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Activation counter initiated!\n"
     ]
    }
   ],
   "source": [
    "Y=np.full((n,1),0)\n",
    "print(\"Activation counter initiated!\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3c42c77f385e45ca8ef1c9bbbf0215c9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/html": [
       "<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
       "<p>\n",
       "  If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n",
       "  that the widgets JavaScript is still loading. If this message persists, it\n",
       "  likely means that the widgets JavaScript library is either not installed or\n",
       "  not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
       "  Widgets Documentation</a> for setup instructions.\n",
       "</p>\n",
       "<p>\n",
       "  If you're reading this message in another notebook frontend (for example, a static\n",
       "  rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
       "  it may mean that your frontend doesn't currently support widgets.\n",
       "</p>\n"
      ],
      "text/plain": [
       "HBox(children=(IntProgress(value=0, max=10), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "df=[]\n",
    "for l in tqdm(range(N)):    \n",
    "    U=W.transpose().dot(I)\n",
    "    F=U.dot(C)/m\n",
    "    #print(F.min(),F.max(),F.mean(),l)\n",
    "    temp=np.greater_equal(F, Theta) #porównanie funkcji aktywacji z progiem\n",
    "    ### dodawanie rekordów bez przekroczenia progu\n",
    "    for i in np.unique(np.where(temp[:,:]==False)[0]):\n",
    "        temp1=np.where(temp[i,:]==False)[0] #tagi, w których dla użytkownika i przekroczony nie był próg\n",
    "        temp2=np.where(I[i][:]==True)[0] #tagi juz aktywne\n",
    "        temp1=np.setdiff1d(temp1,temp2) #usuniecie juz aktywnych tagow\n",
    "        for j in temp1:\n",
    "            df.append([i,copy.deepcopy(F[i][j]),0,copy.deepcopy(Y[i][0])])\n",
    "    ###\n",
    "    for i in np.unique(np.where(temp[:,:]==True)[0]): #iteracja po użytkownikach, którzy mają przekroczony próg\n",
    "        temp1=np.where(temp[i,:]==True)[0] #tagi, w których dla użytkownika i przekroczony był próg\n",
    "        temp2=np.where(I[i][:]==True)[0] #tagi juz aktywne\n",
    "        temp1=np.setdiff1d(temp1,temp2) #usuniecie juz aktywnych tagow\n",
    "    ### dodawanie rekordów z przekroczeniem progów\n",
    "        for j in temp1:\n",
    "            df.append([i,copy.deepcopy(F[i][j]),1,copy.deepcopy(Y[i][0])])\n",
    "    ### \n",
    "        if (not np.any(C[temp1[:, None],temp1]<0)) and (not temp1.size==0): #sprawdzenie, czy kandydaci do aktywacji nie są negatywnie skorelowani\n",
    "            I[i][temp1]=True #aktywacja uzytkownika i w tagach z listy temp1\n",
    "            Y[i][0]+=1#Y[i]+=1 #zwiekszenie licznika aktywacji uzytkownika i\n",
    "            Theta[i]=1-math.pow(1-init_Theta,Y[i][0]+1) #aktualizacja thety\n",
    "        else:\n",
    "            if (np.random.rand()<r) and (not temp1.size==0): #aktywacji pomimo negatywnej korelacji z pr. r\n",
    "                I[i][temp1]=True\n",
    "                Y[i][0]+=1\n",
    "                Theta[i]=1-math.pow(1-init_Theta,Y[i][0]+1)\n",
    "                if temp1.size==0:\n",
    "                    print('empty!')\n",
    "    indykatory.append(I)\n",
    "    frakcje.append(np.vstack((range(m),np.sum(I,axis=0)/n)))\n",
    "    I=copy.deepcopy(I)\n",
    "del temp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADt1JREFUeJzt3X+M5Hddx/Hn6+5odIsCkdPI3fXuTAr1IlS4tVQxWkXl\nWoyNiX+0rBAbk00TimhMpNj4IyGNMVGDhELd1EpMNzQGGj3JQflDkT8IpHtQWq61ZD16v4rpAorK\n/XFc7u0fM2f31rub2d7sfGc++3wkm73vdz7ZeWdu9znfnfnObKoKSVJbtnQ9gCRp9Iy7JDXIuEtS\ng4y7JDXIuEtSg4y7JDVoYNyTPJjk+SRfucTlSfKBJMtJnkjyhtGPKUlaj2GO3D8CHLjM5TcD1/Y/\n5oEPX/lYkqQrMTDuVfVZ4FuXWXIr8LfV83ng5Ul+eFQDSpLWb9sIvsYO4MSq7ZP9fV9fuzDJPL2j\ne66++ur911133QiuXpI2j8OHD3+jqrYPWjeKuA+tqhaABYDZ2dlaWloa59VL0tRLcmyYdaM4W+YU\nsGvV9s7+PklSR0YR94PAO/pnzdwIfLuq/t9DMpKk8Rn4sEySjwI3Aa9MchL4I+AlAFV1P3AIuAVY\nBk4Dd2zUsJKk4QyMe1XdPuDyAt45sokkSVfMV6hKUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhL\nUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOM\nuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1\nyLhLUoOMuyQ1yLhLUoOGinuSA0meSbKc5O6LXP6yJP+Y5MtJjiS5Y/SjSpKGNTDuSbYC9wE3A/uA\n25PsW7PsncBTVXU9cBPw50muGvGskqQhDXPkfgOwXFVHq+oM8DBw65o1BXxfkgAvBb4FnB3ppJKk\noQ0T9x3AiVXbJ/v7Vvsg8KPAc8CTwLur6tzaL5RkPslSkqWVlZUXObIkaZBRPaH6FuBx4FXAjwMf\nTPL9axdV1UJVzVbV7Pbt20d01ZKktYaJ+ylg16rtnf19q90BPFI9y8DXgOtGM6Ikab2GiftjwLVJ\n9vafJL0NOLhmzXHgzQBJfgh4DXB0lINKkoa3bdCCqjqb5C7gUWAr8GBVHUlyZ//y+4H3AR9J8iQQ\n4D1V9Y0NnFuSdBkD4w5QVYeAQ2v23b/q388BvzTa0SRJL5avUJWkBhl3SWqQcZekBhl3SWqQcZek\nBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3\nSWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQ\ncZekBhl3SWqQcZekBhl3SWrQUHFPciDJM0mWk9x9iTU3JXk8yZEk/zLaMSVJ67Ft0IIkW4H7gF8E\nTgKPJTlYVU+tWvNy4EPAgao6nuQHN2pgSdJgwxy53wAsV9XRqjoDPAzcumbN24BHquo4QFU9P9ox\nJUnrMUzcdwAnVm2f7O9b7dXAK5J8JsnhJO+42BdKMp9kKcnSysrKi5tYkjTQqJ5Q3QbsB94KvAX4\ngySvXruoqhaqaraqZrdv3z6iq5YkrTXwMXfgFLBr1fbO/r7VTgLfrKrvAN9J8lngeuCrI5lSkrQu\nwxy5PwZcm2RvkquA24CDa9b8A/DTSbYlmQHeCDw92lElScMaeOReVWeT3AU8CmwFHqyqI0nu7F9+\nf1U9neRTwBPAOeCBqvrKRg4uSbq0VFUnVzw7O1tLS0udXLckTaskh6tqdtA6X6EqSQ0y7pLat7gI\ne/bAli29z4uLXU+04YY5W0aSptfiIszPw+nTve1jx3rbAHNz3c21wTxyl9S2e+55IeznnT7d298w\n4y6pbcePr29/I4y7pLZdc8369jfCuEtq2733wszMhftmZnr7G2bcJbVtbg4WFmD3bkh6nxcWmn4y\nFTxbRtJmMDfXfMzX8shdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWp\nQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZd\nkhpk3CWpQcZdkhpk3CWpQUPFPcmBJM8kWU5y92XW/USSs0l+bXQjSpLWa2Dck2wF7gNuBvYBtyfZ\nd4l1fwp8etRDSpLWZ5gj9xuA5ao6WlVngIeBWy+y7l3Ax4HnRzifJOlFGCbuO4ATq7ZP9vf9nyQ7\ngF8FPny5L5RkPslSkqWVlZX1zipJGtKonlB9P/Ceqjp3uUVVtVBVs1U1u3379hFdtSRprW1DrDkF\n7Fq1vbO/b7VZ4OEkAK8Ebklytqr+fiRTSpLWZZi4PwZcm2QvvajfBrxt9YKq2nv+30k+AnzCsEtS\ndwbGvarOJrkLeBTYCjxYVUeS3Nm//P4NnlGStE7DHLlTVYeAQ2v2XTTqVfUbVz6WJOlK+ApVSWqQ\ncZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZek\nBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3\nSWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBg0V9yQHkjyTZDnJ3Re5fC7JE0meTPK5\nJNePflRJ0rAGxj3JVuA+4GZgH3B7kn1rln0N+Nmqei3wPmBh1INKkoY3zJH7DcByVR2tqjPAw8Ct\nqxdU1eeq6j/6m58Hdo52TElTaXER9uyBLVt6nxcXu55o0xgm7juAE6u2T/b3XcpvAp+82AVJ5pMs\nJVlaWVkZfkpJ02dxEebn4dgxqOp9np838GMy0idUk/wcvbi/52KXV9VCVc1W1ez27dtHedWSJs09\n98Dp0xfuO326t18bbtsQa04Bu1Zt7+zvu0CS1wEPADdX1TdHM56kqXX8+Pr2a6SGOXJ/DLg2yd4k\nVwG3AQdXL0hyDfAI8Paq+urox5Q0da65Zn37NVID415VZ4G7gEeBp4G/q6ojSe5Mcmd/2R8CPwB8\nKMnjSZY2bGJJ0+Hee2Fm5sJ9MzO9/dpwqapOrnh2draWlrwPkJq2uNh7jP348d4R+733wtxc11NN\ntSSHq2p20DpfofpieHqXNJy5OXj2WTh3rvfZsI/NME+oarXzp3edPwvg/Old4DeupInhkft6eXqX\npClg3NfL07skTQHjvl6e3iVpChj39fL0LklTwLiv19wcLCzA7t2Q9D4vLPhkqqSJ4tkyL8bcnDGX\nNNE8cpekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SRqXMf6hH99+QJLG\nYcx/6Mcjd0kahzH/oR/jLknjMOY/9GPcJWkcxvyHfoy7JI3DmP/Qj3GXpHEY8x/68WwZSRqXMf6h\nH4/cJalBxl2SGmTc1Y4xvvpvKubQpuZj7mrDmF/9N/FzaNPzyH2aeYT4gjG/+m/i59CmZ9yn1fkj\nxGPHoOqFI8QuAj8JdzJjfvXfxM+hTc+4T6tJOUKclDuZMb/6b+Ln0KZn3KfVpBwhTsqdzJhf/Tfx\nc2jTM+7TalKOECflTmbMr/6b+Dm06Rn3aTUpR4iTcicDvYA++yycO9f73FVQJ2GOSXgeRJ0aKu5J\nDiR5JslykrsvcnmSfKB/+RNJ3jD6UfEbdrVJOUKclDsZvWBSngdRt6rqsh/AVuDfgB8BrgK+DOxb\ns+YW4JNAgBuBLwz6uvv37691eeihqpmZqt63a+9jZqa3X9166KGq3burkt5n/0+6tXv3hT8n5z92\n7+56Mo0AsFQD+lpVpLf20pL8JPDHVfWW/vZ7+3cKf7JqzV8Bn6mqj/a3nwFuqqqvX+rrzs7O1tLS\n0vD3Qnv29I5A1tq9u/err6SeLVt6OV8r6T1UpKmW5HBVzQ5aN8wrVHcAJ1ZtnwTeOMSaHcAFcU8y\nD/Rfrsf/9O8EhrIf9l/0gmPHOJwcHvbrNOqVwDe6HmKCbOrb43Xw2pf0fsu+wHerzjyRPNnFTBOk\nhe+N3cMsGuvbD1TVArBwpV8nydIw91ybhbfHhbw9XuBtcaHNdHsM84TqKWDXqu2d/X3rXSNJGpNh\n4v4YcG2SvUmuAm4DDq5ZcxB4R/+smRuBb1/u8XZJ0sYa+LBMVZ1NchfwKL0zZx6sqiNJ7uxffj9w\niN4ZM8vAaeCOjRsZGMFDO43x9riQt8cLvC0utGluj4Fny0iSpo+vUJWkBhl3SWrQ1MV90FshbCZJ\ndiX55yRPJTmS5N1dz9S1JFuTfCnJJ7qepWtJXp7kY0n+NcnT/RckbkpJfqf/M/KVJB9N8j1dz7TR\npiruSbYC9wE3A/uA25Ps63aqTp0Ffreq9tF724d3bvLbA+DdwNNdDzEh/hL4VFVdB1zPJr1dkuwA\nfguYraofo3diyG3dTrXxpiruwA3AclUdraozwMPArR3P1Jmq+npVfbH/7/+m98O7o9upupNkJ/BW\n4IGuZ+lakpcBPwP8NUBVnamq/+x2qk5tA743yTZgBniu43k23LTF/VJvc7DpJdkDvB74QreTdOr9\nwO8BvoEK7AVWgL/pP0z1QJKrux6qC1V1Cvgz4Di9t0T5dlV9utupNt60xV0XkeSlwMeB366q/+p6\nni4k+WXg+ara7O8zdN424A3Ah6vq9cB3gE35HFWSV9D7DX8v8Crg6iS/3u1UG2/a4u7bHKyR5CX0\nwr5YVY90PU+H3gT8SpJn6T1c9/NJHup2pE6dBE5W1fnf5D5GL/ab0S8AX6uqlar6LvAI8FMdz7Th\npi3uw7wVwqaRJPQeU326qv6i63m6VFXvraqdVbWH3vfFP1VV80dnl1JV/w6cSPKa/q43A091OFKX\njgM3Jpnp/8y8mU3w5PJY3xXySl3qrRA6HqtLbwLeDjyZ5PH+vt+vqkMdzqTJ8S5gsX8gdJSNf1uQ\niVRVX0jyMeCL9M4w+xKb4G0IfPsBSWrQtD0sI0kagnGXpAYZd0lqkHGXpAYZd0lqkHGXpAYZd0lq\n0P8CqV9m4PomMtMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f774e9d09b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nkowDvwVMXeyFkkwmmUkyMzs7u9xZJUkd9esHqvcCH6qqFy+2qKqmq2qiqibGxsb69KUlSQuNdlhz\nCtg67/GW3rb5JoCHkgC8Crg5ydmq+vu+TClJWpYucX8U2J5kG3NRvwV41/wFVbXtpb8n+STwOcMu\nSYOzZNyr6mySO4BHgBHgwap6PMntvef3r/CMkqRl6vLJnao6BBxasO2CUa+q913+WJKky+FvqEpS\ng4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7\nJDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXI\nuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuF+CA1P7uPbOUa64O1x75ygHpvYNeiRJOo9xX6YD\nU/uYPDXFsc3nqMCxzeeYPDVl4CWtKZ3inmRnkqeSHEly1wWe35PkG0keS/KlJDf0f9S14cNHp3lh\nw/nbXtgwt13S+dzLHZwl455kBLgP2AXsAG5NsmPBsm8Db62qnwY+AjRbuuObzi1ruzSs3MsdrC6f\n3G8EjlTV0ao6DTwE7J6/oKq+VFX/1Xv4ZWBLf8dcO65+fmRZ26Vh5V7uYHWJ+zhwYt7jk71ti/ld\n4J8u9ESSySQzSWZmZ2e7T7mG3HPdJBvPnL9t45m57ZJ+yL3cwerrD1ST/DJzcf/QhZ6vqumqmqiq\nibGxsX5+6VWzZ+/9TI/v5ZrnRkjBNc+NMD2+lz177x/0aNKa4l7uYI12WHMK2Drv8ZbetvMk+Rng\nAWBXVX23P+OtTXv23s8ejLl0MfdcN8nkqanzDs24l7t6unxyfxTYnmRbkiuBW4CD8xckuRp4GHhP\nVX2r/2NKWm/cyx2sVNXSi5KbgXuBEeDBqronye0AVbU/yQPAbwPHev/J2aqauNhrTkxM1MzMzGUN\nL0nDJsnhpfoKHeO+Eoy7JC1f17j7G6qS1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkN\nMu6S1CDjLkmrZDXvTGXcJWkVrPadqYy7Lpv3yZSWttp3pjLuuizeJ1PqZrXvTGXcdVm8T6bUzWrf\nmcq467J4n0ypm9W+/7Jx12XxPplSN6t9Z6ou91CVFuV9MqXuVvP+y35y12XxPpnS2uRt9iRpHfE2\ne5I0xIy7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEt95lUytRYYd6mPvEqm1grjLvWRV8nUWmHc1zF3\n/9cer5KptcK4r1Pu/q9NXiVTa4VxX6fc/V+bVvua3dJijPs65e7/2uRVMrVWrKvruR+Y2seHj05z\nfNM5rn5+hHuumxzab5qrnx/h2OYfDbm7/4O3mtfslhazbj65e4z5fO7+S7qYdRN3jzGfz91/XYxn\nUqnTzTqS7AQ+BowAD1TVRxc8n97zNwMvAO+rqq9e7DWXe7OOK+4OlQvMVvDi3YO54Yi0Fr20l7vw\n1of+z78NfbtZR5IR4D5gF7ADuDXJjgXLdgHbe38mgallT7wETzGTunEvV9DtsMyNwJGqOlpVp4GH\ngN0L1uwGPlVzvgxcleQ1/RzUY8xSN55JJeh2tsw4cGLe45PAmzusGQeenr8oySRzn+wBnkvy1HKG\n3fwyrt7wcsbOjMCGc3DFD5h99/9OHX/3vr7vKKw3rwKeHfQQa8hQvx8bXs2bzlxgh3b0HOTPc3j1\nJ1pTWvi3cU2XRat6KmRVTQOXvW+YZOZ0h2NOwyLJTJdjcMPC9+OHfC/ON0zvR5fDMqeArfMeb+lt\nW+4aSdIq6RL3R4HtSbYluRK4BTi4YM1B4L2ZcxPw/ap6euELSZJWx5KHZarqbJI7gEeYOxXywap6\nPMntvef3A4eYOw3yCHOnQt62ciMDfTi00xjfj/P5fvyQ78X5hub96HSeuyRpfVk3v6EqSerOuEtS\ng9Zd3JPsTPJUkiNJ7hr0PIOUZGuSf0nyRJLHk3xw0DMNWpKRJF9L8rlBzzJoSa5K8pkk/57kySQ/\nP+iZBiXJH/S+R76Z5NNJfmzQM620dRX3jpdCGCZngT+sqh3ATcD7h/z9APgg8OSgh1gjPgZ8vqqu\nB25gSN+XJOPA7wETVfVTzJ0Ycstgp1p56yrudLsUwtCoqqdfukBbVf2AuW/e8cFONThJtgDvBB4Y\n9CyDluQVwC8BnwCoqtNV9d+DnWqgRoGXJRkFNgLfGfA8K269xX2xyxwMvSTXAm8AvjLYSQbqXuCP\ngBcHPcgasA2YBf62d5jqgSSbBj3UIFTVKeAvgePMXRLl+1X1hcFOtfLWW9x1AUk2A58Ffr+q/mfQ\n8wxCkt8AnqmqYb92yktGgTcCU1X1BuB5YCh/RpXklczt4W8DXgtsSvLuwU618tZb3L3MwQJJNjAX\n9gNV9fCg5xmgtwC/meQ/mDtc9ytJ/m6wIw3USeBkVb20J/cZ5mI/jH4V+HZVzVbVGeBh4BcGPNOK\nW29x73IphKHRu0nKJ4Anq+qvBz3PIFXVH1fVlqq6lrl/F/9cVc1/OltMVf0ncCLJ63ub3g48McCR\nBuk4cFOSjb3vmbczBD9cXlc3yF7sUggDHmuQ3gK8B3gsydd72/6kqg4NcCatHR8ADvQ+CB1l5S8L\nsiZV1VeSfAb4KnNnmH2NIbgMgZcfkKQGrbfDMpKkDoy7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtS\ng/4Paba9W5Mh/N4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76a43bd780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAD25JREFUeJzt3V9s3eddx/H3J3YqlgTWQQPanDbJpG4lAso20xWGYDBg\n6YaokLho525ahWQ1WcdAqKxQAZOmSiAG2tAaV1ZXqglrvdgqKFNZd8GfXUyb6mxjXVo6RVmTJi2q\nu0EhzUWT9MvFcVfbi+vj5ti/+DnvlxQl5zmP7K9Om7d+Oef4OakqJElt2dT1AJKkwTPuktQg4y5J\nDTLuktQg4y5JDTLuktSgFeOe5O4kTyf51jL3J8nfJjmc5JtJ3jz4MSVJq9HPlfs9wN6Xuf8a4PL5\nX5PA1PmPJUk6HyvGvaq+BHzvZbZcC3y6er4CXJzktYMaUJK0eqMD+BpjwBMLbh+fX3tq6cYkk/Su\n7tm6detbrrjiigF8e0kaHgcPHnymqravtG8Qce9bVU0D0wDj4+M1Ozu7nt9ekja8JEf72TeId8uc\nAC5dcHvH/JokqSODiPv9wPvm3zVzNfBsVf3AUzKSpPWz4tMyST4DvB24JMlx4M+BzQBVdSfwAPAu\n4DBwCrhxrYaVJPVnxbhX1fUr3F/ABwY2kSTpvPkTqpLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y\n7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLU\nIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMu\nSQ0y7pLUIOMuSQ0y7pLUoL7inmRvkseSHE5y6znuf3WSf0ryH0kOJblx8KNKkvq1YtyTjAB3ANcA\ne4Drk+xZsu0DwCNVdSXwduCvk1w04FklSX3q58r9KuBwVR2pqueBe4Frl+wp4IeTBNgGfA84M9BJ\nJUl96yfuY8ATC24fn19b6JPATwJPAg8DH6qqF5Z+oSSTSWaTzM7Nzb3CkSVJKxnUC6rvBL4BvA74\nWeCTSX5k6aaqmq6q8aoa3759+4C+tSRpqX7ifgK4dMHtHfNrC90I3Fc9h4HvAFcMZkRJ0mr1E/eH\ngMuT7J5/kfQ64P4le44B7wBI8hPAG4EjgxxUktS/0ZU2VNWZJDcDDwIjwN1VdSjJTfP33wl8FLgn\nycNAgA9X1TNrOLck6WWsGHeAqnoAeGDJ2p0L/vwk8BuDHU2S9Er5E6qS1CDjLkkNMu6SmjcztZ9d\nt4yy6SNh1y2jzEzt73qkNWfcJTVtZmo/kyemOLrtLBU4uu0skyemmg+8cZfUtNuOTHNq8+K1U5t7\n6y0z7pKadmzr2VWtt8K4S2raZc+NrGq9FcZdUtNuf/0kW04vXttyurfeMuMuqWkT+w4wPbaPnSdH\nSMHOkyNMj+1jYt+BrkdbU6mqTr7x+Ph4zc7OdvK9JWmjSnKwqsZX2ueVuyQ1yLhLUoOMuyQ1yLhL\nUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLirGcP4IcjScoy7mjCs\nH4IsLce4qwnD+iHI0nKMu5owrB+CLC3HuKsJw/ohyNJyjLuaMKwfgiwtx7irCcP6IcjScvyAbEna\nQPyAbEkaYsZdkhpk3CWpQX3FPcneJI8lOZzk1mX2vD3JN5IcSvLvgx1TkrQaoyttSDIC3AH8OnAc\neCjJ/VX1yII9FwMHgL1VdSzJj6/VwJKklfVz5X4VcLiqjlTV88C9wLVL9rwHuK+qjgFU1dODHVOS\ntBr9xH0MeGLB7ePzawu9AXhNkn9LcjDJ+871hZJMJplNMjs3N/fKJpYkrWhQL6iOAm8B3g28E/jT\nJG9YuqmqpqtqvKrGt2/fPqBvLUlaasXn3IETwKULbu+YX1voOPDdqnoOeC7Jl4ArgW8PZEpJ0qr0\nc+X+EHB5kt1JLgKuA+5fsucfgV9MMppkC/BW4NHBjipJ6teKV+5VdSbJzcCDwAhwd1UdSnLT/P13\nVtWjSb4AfBN4Abirqr61loNLkpbn2TKStIF4towkDTHjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S\n1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDj\nLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkN\nMu6S1CDjLkkNMu6S1KC+4p5kb5LHkhxOcuvL7Pu5JGeS/M7gRpQkrdaKcU8yAtwBXAPsAa5PsmeZ\nfX8JfHHQQ0qSVqefK/ergMNVdaSqngfuBa49x74PAp8Dnh7gfJKkV6CfuI8BTyy4fXx+7fuSjAG/\nDUy93BdKMplkNsns3NzcameVJPVpUC+ofhz4cFW98HKbqmq6qsaranz79u0D+taSpKVG+9hzArh0\nwe0d82sLjQP3JgG4BHhXkjNV9Q8DmVKStCr9xP0h4PIku+lF/TrgPQs3VNXuF/+c5B7g84Zdkrqz\nYtyr6kySm4EHgRHg7qo6lOSm+fvvXOMZJUmr1M+VO1X1APDAkrVzRr2q3n/+Y0mSzoc/oSpJDTLu\nktQg4y5JDTLur8DM1H523TLKpo+EXbeMMjO1v+uRJGkR475KM1P7mTwxxdFtZ6nA0W1nmTwxZeAl\nXVCM+yrddmSaU5sXr53a3FuXpAuFcV+lY1vPrmpdkrpg3FfpsudGVrUuSV0w7qt0++sn2XJ68dqW\n0711SbpQGPdVmth3gOmxfew8OUIKdp4cYXpsHxP7DnQ9miR9X6qqk288Pj5es7OznXxvSdqokhys\nqvGV9nnlLkkNMu6S1CDjLkkNMu6S1CDjLknrZD3PpTLukrQO1vtcKuMuSetgvc+lMu6StA7W+1wq\n467z5vn20srW+1wq467z4vn2Un/W+1wq467z4vn2Un/W+1yq0TX5qhoanm8v9W9i3wEmWJ9DBr1y\n13nxfHvpwmTcdV483166MBl3nRfPt5cuTJ7nLkkbiOe5S9IQM+6S1CDjLkkNMu6S1CDjLkkNMu6S\n1oyHynXHuEtaEx4q162+4p5kb5LHkhxOcus57p9I8s0kDyf5cpIrBz+qpI3EQ+W6tWLck4wAdwDX\nAHuA65PsWbLtO8AvV9VPAx8F/K8nDTkPletWP1fuVwGHq+pIVT0P3Atcu3BDVX25qv57/uZXgB2D\nHVPSRuOhct3qJ+5jwBMLbh+fX1vO7wL/fK47kkwmmU0yOzc31/+UkjYcD5Xr1kBfUE3yK/Ti/uFz\n3V9V01U1XlXj27dvH+S3lnSB8VC5bvXzYR0ngEsX3N4xv7ZIkp8B7gKuqarvDmY8SRvZen44hRbr\n58r9IeDyJLuTXARcB9y/cEOSy4D7gPdW1bcHP6YkaTVWvHKvqjNJbgYeBEaAu6vqUJKb5u+/E/gz\n4MeAA0kAzvRzJKUkaW14nrskbSCe5y5JQ8y4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KD\njLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLsk\nNci4S1KDjLskNci4S1KDjLskNci4S4M2MwO7dsGmTb3fZ2a6nkhDaLTrAaSmzMzA5CScOtW7ffRo\n7zbAxER3c2noeOUuDdJtt70U9hedOtVbl9aRcd/AZqb2s+uWUTZ9JOy6ZZSZqf1dj6Rjx1a3Lq0R\n475BzUztZ/LEFEe3naUCR7edZfLElIHv2mWXrW5dWiPGfYO67cg0pzYvXju1ubeuDt1+O2zZsnht\ny5beurSOjPsGdWzr2VWta51MTMD0NOzcCUnv9+lpX0zVuttYcfctZt932XMjq1rXOpqYgMcfhxde\n6P1u2NWBjRP3F99idvQoVL30FrMhDfztr59ky+nFa1tO99YlX2zXxom7bzFbZGLfAabH9rHz5Agp\n2HlyhOmxfUzsO9D1aOqYL7YLIFW18qZkL/AJYAS4q6r+Ysn9mb//XcAp4P1V9bWX+5rj4+M1Ozvb\n/6SbNvWu2H9wuN4/fyUBsOuWUY5u+8HXXnaeHOHxvzrTwUQapCQHq2p8pX0rXrknGQHuAK4B9gDX\nJ9mzZNs1wOXzvyaBqVVPvBLfYib1xRfbBf09LXMVcLiqjlTV88C9wLVL9lwLfLp6vgJcnOS1A53U\nt5hJffHFdkF/Z8uMAU8suH0ceGsfe8aApxZuSjJJ78oe4GSSx1Yz7CXwo6+Dsc1w0Wl4/slTp048\nc8MN3+OGG1bzZVp0CfBM10NcQIb68dj2Ki7Lq9leeWktBd999uxcPpZh/1HZFv7f2NnPpnU9OKyq\npoHz/imbJLP9POc0LHw8FvPxeImPxWLD9Hj087TMCeDSBbd3zK+tdo8kaZ30E/eHgMuT7E5yEXAd\ncP+SPfcD70vP1cCzVfXU0i8kSVofKz4tU1VnktwMPEjvrZB3V9WhJDfN338n8AC9t0EepvdWyBvX\nbmRgAE/tNMbHYzEfj5f4WCw2NI9HX+9zlyRtLBvnJ1QlSX0z7pLUoA0X9yR7kzyW5HCSW7uep0tJ\nLk3yr0keSXIoyYe6nqlrSUaSfD3J57uepWtJLk7y2ST/meTRJD/f9UxdSfIH839HvpXkM0l+qOuZ\n1tqGinufRyEMkzPAH1bVHuBq4AND/ngAfAh4tOshLhCfAL5QVVcAVzKkj0uSMeD3gPGq+il6bwy5\nrtup1t6Gijv9HYUwNKrqqRcPaKuq/6P3l3es26m6k2QH8G7grq5n6VqSVwO/BHwKoKqer6r/6Xaq\nTo0Cr0oyCmwBnux4njW30eK+3DEHQy/JLuBNwFe7naRTHwf+CPCYUNgNzAF/N/801V1JtnY9VBeq\n6gTwMeAYvSNRnq2qL3Y71drbaHHXOSTZBnwO+P2q+t+u5+lCkt8Enq6qg13PcoEYBd4MTFXVm4Dn\ngKF8jSrJa+j9C3838Dpga5LmD6TaaHH3mIMlkmymF/aZqrqv63k69Dbgt5I8Tu/pul9N8vfdjtSp\n48DxqnrxX3KfpRf7YfRrwHeqaq6qTgP3Ab/Q8UxrbqPFvZ+jEIbG/IekfAp4tKr+put5ulRVf1xV\nO6pqF73/L/6lqpq/OltOVf0X8ESSN84vvQN4pMORunQMuDrJlvm/M+9gCF5cXtdTIc/XckchdDxW\nl94GvBd4OMk35tf+pKoe6HAmXTg+CMzMXwgdYe2PBbkgVdVXk3wW+Bq9d5h9nSE4hsDjBySpQRvt\naRlJUh+MuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoP+Hyj7q37Lqc6uAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7695a41eb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76a43321d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAD0RJREFUeJzt3W+MpWddh/Hr25k2ulukYFcDs90/TQrNRq3AWKoQRVHZ\nBePGxMSWKYTGZNItRTSmUm1UEtJEEzVg6E4zKYUQJ/QFNFpJpbzwDy8IpLOAwLaWbBZ2u9uabqmi\n7b5od/vzxTm1s8POzpndM/PM3Of6JM3uec6dM7+e7F77nOecuSdVhSSpLRd1PYAkafiMuyQ1yLhL\nUoOMuyQ1yLhLUoOMuyQ1aNm4J7k3yVNJvr3E/Unyt0kOJflmkjcOf0xJ0koMcub+KWD3Oe7fA1zV\n/28amLnwsSRJF2LZuFfVl4BnzrFkL/Dp6vkKcFmS1wxrQEnSyo0P4TEmgMcX3D7WP/bk4oVJpumd\n3bN58+Y3XX311UP48pI0Og4cOPB0VW1Zbt0w4j6wqpoFZgEmJydrfn5+Lb+8JG14SY4Msm4Yn5Y5\nDlyx4PbW/jFJUkeGEfcHgPf2PzVzHfCDqvqhSzKSpLWz7GWZJJ8B3gZcnuQY8OfAxQBVdTfwIPBO\n4BBwErhptYaVJA1m2bhX1Q3L3F/A+4c2kSTpgvkdqpLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y\n7pLUIOMuqXlzM7ew47ZxLvpw2HHbOHMzt3Q90qoz7pKaNjdzC9PHZzhy6WkqcOTS00wfn2k+8MZd\nUtPuODzLyYvPPHby4t7xlhl3SU07uvn0io63wrhLatq258ZWdLwVxl1S0+68cppNL5x5bNMLveMt\nM+6Smja1bz+zE/vY/uwYKdj+7BizE/uY2re/69FWVXo79q49f8yeJK1ckgNVNbncOs/cJalBxl2S\nGmTcJalBxl2SGmTc1YxR3D9EWopxVxNGdf8QaSnGXU0Y1f1DpKUYdzVhVPcPkZZi3NWEUd0/RFqK\ncVcTRnX/EGkpxl1NGNX9Q6SluLeMJG0g7i0jSSPMuEtSg4y7JDXIuEtSg4y7Lph7ukjrj3HXBXFP\nF2l9Mu66IO7pIq1Pxl0XxD1dpPVpoLgn2Z3ksSSHktx+lvtfmeQfk/x7koNJbhr+qFqP3NNFWp+W\njXuSMeAuYA+wC7ghya5Fy94PPFJV1wBvA/46ySVDnlXrkHu6SOvTIGfu1wKHqupwVT0P3AfsXbSm\ngFckCXAp8AxwaqiTal1yTxdpfRofYM0E8PiC28eANy9a83HgAeAJ4BXA71TVi4sfKMk0MA2wbdu2\n85l3XZibuYU7Ds9ydPNptj03xp1XTo90zKb27WeK0f3/l9ajYb2h+g7gG8BrgZ8FPp7kxxYvqqrZ\nqpqsqsktW7YM6UuvLT/6J+l8reX3hAwS9+PAFQtub+0fW+gm4P7qOQR8F7h6OCOuL370T9L5WOsT\nw0Hi/jBwVZKd/TdJr6d3CWaho8DbAZL8JPB64PAwB10v/OifpPOx1ieGy15zr6pTSW4FHgLGgHur\n6mCSm/v33w18BPhUkm8BAT5UVU+vysQd2/bcGEcu/eGQ+9E/Seey1ieGg7yhSlU9CDy46NjdC37/\nBPDrwx1tfbrzymmmj8+c8S+wH/2TtJy1PjH0O1RXyI/+STofa/09If6YPUlaI8P4GPWgP2bPuEvS\nBuLPUJWkEWbcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalB\nxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2S\nGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGjRQ3JPsTvJYkkNJbl9izduSfCPJwST/NtwxJUkr\nMb7cgiRjwF3ArwHHgIeTPFBVjyxYcxmwH9hdVUeT/MRqDSxJWt4gZ+7XAoeq6nBVPQ/cB+xdtObd\nwP1VdRSgqp4a7piSpJUYJO4TwOMLbh/rH1vodcCrkvxrkgNJ3nu2B0oynWQ+yfyJEyfOb2JJ0rKG\n9YbqOPAm4F3AO4A/TfK6xYuqaraqJqtqcsuWLUP60pKkxZa95g4cB65YcHtr/9hCx4DvV9VzwHNJ\nvgRcA3xnKFNKklZkkDP3h4GrkuxMcglwPfDAojX/ALw1yXiSTcCbgUeHO6okaVDLnrlX1akktwIP\nAWPAvVV1MMnN/fvvrqpHk3wB+CbwInBPVX17NQeXJC0tVdXJF56cnKz5+flOvrYkbVRJDlTV5HLr\n/A5VSWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3\nSWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQ\ncZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWrQQHFPsjvJY0kOJbn9\nHOt+LsmpJL89vBElSSu1bNyTjAF3AXuAXcANSXYtse4vgS8Oe0hJ0soMcuZ+LXCoqg5X1fPAfcDe\ns6z7APA54KkhzidJOg+DxH0CeHzB7WP9Y/8vyQTwW8DMuR4oyXSS+STzJ06cWOmskqQBDesN1Y8C\nH6qqF8+1qKpmq2qyqia3bNkypC8tSVpsfIA1x4ErFtze2j+20CRwXxKAy4F3JjlVVX8/lCklSSsy\nSNwfBq5KspNe1K8H3r1wQVXtfOn3ST4FfN6wS1J3lo17VZ1KcivwEDAG3FtVB5Pc3L//7lWeUZK0\nQoOcuVNVDwIPLjp21qhX1fsufCxJ0oXwO1QlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHG\nXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIa\nZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXdKqmZu5\nhR23jXPRh8OO28aZm7ml65FGhnGXtCrmZm5h+vgMRy49TQWOXHqa6eMzBn6NGHdJq+KOw7OcvPjM\nYycv7h3X6hso7kl2J3ksyaEkt5/l/qkk30zyrSRfTnLN8EeVtJEc3Xx6Rcc1XMvGPckYcBewB9gF\n3JBk16Jl3wV+qap+GvgI4D/N0ojb9tzYio5ruAY5c78WOFRVh6vqeeA+YO/CBVX15ar6r/7NrwBb\nhzumpI3mziun2fTCmcc2vdA7rtU3SNwngMcX3D7WP7aU3wX+6Wx3JJlOMp9k/sSJE4NPKWnDmdq3\nn9mJfWx/dowUbH92jNmJfUzt29/1aCNhfJgPluSX6cX9rWe7v6pm6V+ymZycrGF+bUnrz9S+/Uxh\nzLswSNyPA1csuL21f+wMSX4GuAfYU1XfH854kqTzMchlmYeBq5LsTHIJcD3wwMIFSbYB9wPvqarv\nDH9MSdJKLHvmXlWnktwKPASMAfdW1cEkN/fvvxv4M+DHgf1JAE5V1eTqjS1JOpdUdXPpe3Jysubn\n5zv52pK0USU5MMjJs9+hKkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S\n1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDj\nLkkNMu6S1CDjLkkNMu7SsM3NwY4dcNFFvV/n5rqeSCNovOsBpKbMzcH0NJw82bt95EjvNsDUVHdz\naeR45i4N0x13vBz2l5w82TsurSHjvpH58n/9OXp0ZcelVWLcN6qXXv4fOQJVL7/8N/Dd2rZtZcel\nVWLcNypf/q9Pd94JmzadeWzTpt5xaQ0Z943Kl//r09QUzM7C9u2Q9H6dnfXNVK25jRV3rzG/zJf/\n69fUFHzve/Dii71fDbs6sHHi7jXmM/nyX+fiidDI2zhx9xrzmXz5r6V4IiQgVbX8omQ38DFgDLin\nqv5i0f3p3/9O4CTwvqr62rkec3Jysubn5wef9KKLen9Qf3i43stfST07dvSCvtj27b3LRNrQkhyo\nqsnl1i175p5kDLgL2APsAm5IsmvRsj3AVf3/poGZFU+8HK8xS4PxzXYx2GWZa4FDVXW4qp4H7gP2\nLlqzF/h09XwFuCzJa4Y6qdeYpcF4IiQG21tmAnh8we1jwJsHWDMBPLlwUZJpemf2AM8meWwlw14O\nr34tTFwMl7wAzz9x8uTxp2+88RluvHElD9Oiy4Gnux5iHRnp5+NyePU22J4FJ28FLx49cuTI08kz\nXc62DrTwZ2P7IIvWdOOwqpoFZi/0cZLMD3LNaVT4fJzJ5+NlPhdnGqXnY5DLMseBKxbc3to/ttI1\nkqQ1MkjcHwauSrIzySXA9cADi9Y8ALw3PdcBP6iqJxc/kCRpbSx7WaaqTiW5FXiI3kch762qg0lu\n7t9/N/AgvY9BHqL3UcibVm9kYAiXdhrj83Emn4+X+VycaWSej4E+5y5J2lg2zneoSpIGZtwlqUEb\nLu5Jdid5LMmhJLd3PU+XklyR5F+SPJLkYJIPdj1T15KMJfl6ks93PUvXklyW5LNJ/iPJo0l+vuuZ\nupLkD/p/R76d5DNJfqTrmVbbhor7gFshjJJTwB9W1S7gOuD9I/58AHwQeLTrIdaJjwFfqKqrgWsY\n0eclyQTwe8BkVf0UvQ+GXN/tVKtvQ8WdwbZCGBlV9eRLG7RV1f/S+8s70e1U3UmyFXgXcE/Xs3Qt\nySuBXwQ+AVBVz1fVf3c7VafGgR9NMg5sAp7oeJ5Vt9HivtQ2ByMvyQ7gDcBXu52kUx8F/ghwm1DY\nCZwAPtm/THVPks1dD9WFqjoO/BVwlN6WKD+oqi92O9Xq22hx11kkuRT4HPD7VfU/Xc/ThSS/ATxV\nVQe6nmWdGAfeCMxU1RuA54CRfI8qyavovcLfCbwW2Jyk+Q2pNlrc3eZgkSQX0wv7XFXd3/U8HXoL\n8JtJvkfvct2vJPm7bkfq1DHgWFW99Erus/RiP4p+FfhuVZ2oqheA+4Ff6HimVbfR4j7IVggjo/9D\nUj4BPFpVf9P1PF2qqj+uqq1VtYPen4t/rqrmz86WUlX/CTye5PX9Q28HHulwpC4dBa5Lsqn/d+bt\njMCby2u6K+SFWmorhI7H6tJbgPcA30ryjf6xP6mqBzucSevHB4C5/onQYVZ/W5B1qaq+muSzwNfo\nfcLs64zANgRuPyBJDdpol2UkSQMw7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ36P5chmb7R3Bfz\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7695aac7f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAD0ZJREFUeJzt3V2MXPddh/Hn63UisAOkJQa1fq/kNlhAaLukgVZQKFC7\nRVhIXCTdtGqEtErSlIJQaSACKlWRQLyoRU0crdJQVayaizYCU5mmF7z0omqVdVuaOiGV5cZvCYrT\nQCHZC8fxj4sZk/XG9s7as3t2/vt8JGt9zvy189PI++jMObPHqSokSW1Z0/UAkqThM+6S1CDjLkkN\nMu6S1CDjLkkNMu6S1KAF457kgSTPJPn2BR5Pkr9JcijJt5K8afhjSpIWY5Aj908Duy7y+G5gR//P\nJLD38seSJF2OBeNeVV8GnrvIkj3AZ6rnq8DVSV4zrAElSYu3dgjfYyNwbM728f6+p+cvTDJJ7+ie\n9evXv/naa68dwtNL0upx4MCBZ6tqw0LrhhH3gVXVFDAFMD4+XjMzM8v59JJWqem9t3PX4SmOrn+J\nLS+McffrJpm47d6ux7okSY4Msm4Yn5Y5AWyes72pv0+SOje993YmT+zlyFUvUYEjV73E5Im9TO+9\nvevRltQw4r4PeF//UzM3AN+vqleckpGkLtx1eIrZK87dN3tFb3/LFjwtk+SzwNuBa5IcB/4UuAKg\nqu4D9gPvAg4Bs8AtSzWsJC3W0fUvLWp/KxaMe1XdtMDjBXxgaBNJ0hBteWGMI1e9MuRbXhjrYJrl\n42+oqhnTe29n24fXsuajYduH1zZ/TlWDuft1k6x78dx9617s7W+ZcddlWwlRXa0XzbSwidvuZWrj\nbWx9fowUbH1+jKmNt43sp2UGla7+JyY/CtmGs1Gde8Fq3Yss+w/Ptg+vPe9b763Pj/HkX5xetjmk\npZbkQFWNL7TOI3ddlpXySYTVetFMuhDjrsuyUqJ6oYtjrV8002hZzlOYxv0SrIRzzCvFSonqar1o\nptGx3NeFjPsieeHuXCslqqv1oplGx3KfwvSC6iJ54e6VWrpvh7RU1nw0VF65PwVnPjp4hwe9oLqs\nNw5rwUo5x7ySTNx2LxMYc+lilvuXqTwts0gr5RyzpNGy3KcwjfsirZRzzJJGy3JfF/Kc+yXwHLOk\nrgx6zt24S9II8TdUJWkVM+6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDj\nLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1KCB4p5k\nV5InkhxKcud5Hv+RJP+Y5N+THExyy/BHlSQNasG4JxkD7gF2AzuBm5LsnLfsA8BjVXUd8Hbgr5Jc\nOeRZJUkDGuTI/XrgUFUdrqpTwIPAnnlrCvihJAGuAp4DTg91UknSwAaJ+0bg2Jzt4/19c30S+Ang\nKeBR4ENVdWb+N0oymWQmyczJkycvcWRJ0kKGdUH1ncA3gdcCPwN8MskPz19UVVNVNV5V4xs2bBjS\nU0uS5hsk7ieAzXO2N/X3zXUL8FD1HAK+C1w7nBElSYs1SNwfAXYk2d6/SHojsG/emqPAOwCS/Djw\nBuDwMAeVJA1u7UILqup0kjuAh4Ex4IGqOpjk1v7j9wEfAz6d5FEgwEeq6tklnFuSdBELxh2gqvYD\n++ftu2/O358Cfm24o0mSLpW/oSpJDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5J\nDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLu\nktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktSg\ngeKeZFeSJ5IcSnLnBda8Pck3kxxM8m/DHVOStBhrF1qQZAy4B/hV4DjwSJJ9VfXYnDVXA/cCu6rq\naJIfW6qBJUkLG+TI/XrgUFUdrqpTwIPAnnlr3gM8VFVHAarqmeGOKUlajEHivhE4Nmf7eH/fXK8H\nXpXkX5McSPK+832jJJNJZpLMnDx58tImliQtaFgXVNcCbwbeDbwT+OMkr5+/qKqmqmq8qsY3bNgw\npKeWJM234Dl34ASwec72pv6+uY4D36uqF4AXknwZuA74zlCmlCQtyiBH7o8AO5JsT3IlcCOwb96a\nfwDelmRtknXAW4DHhzuqJGlQCx65V9XpJHcADwNjwANVdTDJrf3H76uqx5N8EfgWcAa4v6q+vZSD\nS5IuLFXVyROPj4/XzMxMJ88tSaMqyYGqGl9onb+hKkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDj\nLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkN\nMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S\n1CDjLkkNMu6S1CDjLkkNGijuSXYleSLJoSR3XmTdzyY5neS3hjeiJGmxFox7kjHgHmA3sBO4KcnO\nC6z7c+BLwx5SkrQ4gxy5Xw8cqqrDVXUKeBDYc551HwQ+DzwzxPkkSZdgkLhvBI7N2T7e3/f/kmwE\nfhPYe7FvlGQyyUySmZMnTy52VknSgIZ1QfXjwEeq6szFFlXVVFWNV9X4hg0bhvTUkqT51g6w5gSw\nec72pv6+ucaBB5MAXAO8K8npqvr7oUwpSVqUQeL+CLAjyXZ6Ub8ReM/cBVW1/ezfk3wa+IJhl6Tu\nLBj3qjqd5A7gYWAMeKCqDia5tf/4fUs8oyRpkQY5cqeq9gP75+07b9Sr6v2XP5Yk6XL4G6qS1CDj\nLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkN\nMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S\n1CDjLkkNMu6S1CDjLkkNMu6S1CDjLmnpTE/Dtm2wZk3v6/R01xOtGmu7HkBSo6anYXISZmd720eO\n9LYBJia6m2uV8Mhd0tK4666Xw37W7Gxvv5bcQHFPsivJE0kOJbnzPI9PJPlWkkeTfCXJdcMfVdJI\nOXp0cfs1VAvGPckYcA+wG9gJ3JRk57xl3wV+sap+CvgYMDXsQSWNmC1bFrdfQzXIkfv1wKGqOlxV\np4AHgT1zF1TVV6rqv/qbXwU2DXdMSSPn7rth3bpz961b19uvJTdI3DcCx+ZsH+/vu5DfBv7pfA8k\nmUwyk2Tm5MmTg08pafRMTMDUFGzdCknv69SUF1OXyVA/LZPkl+jF/W3ne7yqpuifshkfH69hPrek\nFWhiwph3ZJC4nwA2z9ne1N93jiQ/DdwP7K6q7w1nPEnSpRjktMwjwI4k25NcCdwI7Ju7IMkW4CHg\nvVX1neGPKUlajAWP3KvqdJI7gIeBMeCBqjqY5Nb+4/cBfwL8KHBvEoDTVTW+dGNLki4mVd2c+h4f\nH6+ZmZlOnluSRlWSA4McPPsbqpLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLU\nIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMu\nSQ0y7pLUIOMuSQ0y7pLUIOMuDdv0NGzbBmvW9L5OT3c9kVahtV0PIDVlehomJ2F2trd95EhvG2Bi\noru5tOp45C4N0113vRz2s2Zne/ulZWTcR5lv/1eeo0cXt19aIsZ9VJ19+3/kCFS9/PbfwHdry5bF\n7ZeWiHEfVb79X5nuvhvWrTt337p1vf3SMjLuo8q3/yvTxARMTcHWrZD0vk5NeTFVy2604u455pf5\n9n/lmpiAJ5+EM2d6Xw27OjA6cfcc87l8+6+L8UBo1RuduHuO+Vy+/deFeCAkIFW18KJkF/AJYAy4\nv6r+bN7j6T/+LmAWeH9Vff1i33N8fLxmZmYGn3TNmt4/1FcO13v7K6ln27Ze0OfburV3mkgjLcmB\nqhpfaN2CR+5JxoB7gN3ATuCmJDvnLdsN7Oj/mQT2LnrihXiOWRqMF9vFYKdlrgcOVdXhqjoFPAjs\nmbdmD/CZ6vkqcHWS1wx1Us8xS4PxQEgMdm+ZjcCxOdvHgbcMsGYj8PTcRUkm6R3ZAzyf5InFDHsN\nvPq1sPEKuPJFOPXU7OyJZ2+++Tluvnkx36ZF1wDPdj3ECrKqX49r4NVbYGvmHLwVnDl65MiRZ5Pn\nupxtBWjh38bWQRYt643DqmoKmLrc75NkZpBzTquFr8e5fD1e5mtxrtX0egxyWuYEsHnO9qb+vsWu\nkSQtk0Hi/giwI8n2JFcCNwL75q3ZB7wvPTcA36+qp+d/I0nS8ljwtExVnU5yB/AwvY9CPlBVB5Pc\n2n/8PmA/vY9BHqL3Uchblm5kYAindhrj63EuX4+X+Vqca9W8HgN9zl2SNFpG5zdUJUkDM+6S1KCR\ni3uSXUmeSHIoyZ1dz9OlJJuT/EuSx5IcTPKhrmfqWpKxJN9I8oWuZ+lakquTfC7JfyR5PMnPdT1T\nV5L8Xv9n5NtJPpvkB7qeaamNVNwHvBXCanIa+P2q2gncAHxglb8eAB8CHu96iBXiE8AXq+pa4DpW\n6euSZCPwO8B4Vf0kvQ+G3NjtVEtvpOLOYLdCWDWq6umzN2irqv+l98O7sdupupNkE/Bu4P6uZ+la\nkh8BfgH4FEBVnaqq/+52qk6tBX4wyVpgHfBUx/MsuVGL+4Vuc7DqJdkGvBH4WreTdOrjwB8A3iYU\ntgMngb/tn6a6P8n6rofqQlWdAP4SOErvlijfr6ovdTvV0hu1uOs8klwFfB743ar6n67n6UKSXwee\nqaoDXc+yQqwF3gTsrao3Ai8Aq/IaVZJX0XuHvx14LbA+SfM3pBq1uHubg3mSXEEv7NNV9VDX83To\nrcBvJHmS3um6X07yd92O1KnjwPGqOvtO7nP0Yr8a/Qrw3ao6WVUvAg8BP9/xTEtu1OI+yK0QVo3+\nf5LyKeDxqvrrrufpUlX9YVVtqqpt9P5d/HNVNX90diFV9Z/AsSRv6O96B/BYhyN16ShwQ5J1/Z+Z\nd7AKLi4v610hL9eFboXQ8VhdeivwXuDRJN/s7/ujqtrf4UxaOT4ITPcPhA6z9LcFWZGq6mtJPgd8\nnd4nzL7BKrgNgbcfkKQGjdppGUnSAIy7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg/4PI0eLBN/f\n7K8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76959e0048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7695814e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADzBJREFUeJzt3W2MpWddx/Hvb2e76i5Kwa4GZh9JFupGrMBYqhBFQdkF\n48aEFy1TCIRksoUiGqNUGw0J2UTjQ8DQh4ylEuKEvoBGV7JSXvjAC4R0FpCyrSWbhX1qtVNW0XYT\nt8v+fXFO3Zlhd+dMe2bumWu+n6SZva9zZc4/JzPf3Oc+Z05TVUiS2rKu6wEkScNn3CWpQcZdkhpk\n3CWpQcZdkhpk3CWpQQvGPcm9SZ5I8o3L3J4kf5HkaJKvJ3n18MeUJC3GIGfunwD2XOH2vcCu/n8T\nwF3PfyxJ0vOxYNyr6gvAmSts2Qd8snq+BFyd5CXDGlCStHjrh/A9RoGTs45P9dcen78xyQS9s3s2\nbdr0mmuvvXYId7/8zsyc4PT/znBuHWy4AKM/sJkXb97W9VidODNzguPnZriQi2vrCrZvWN7HZKXM\noZXnoVOHOXeJ09gNF+CVW16zrLMMox2HDx9+sqo2L7RvGHEfWFVNApMAY2NjNT09vZx3PxRTd72X\nidOHOXdV7/gc8B/PzPDh0bcxfsudnc7WhR2/s54LL5i7dgG48NQZpv/kiTU3h1aedR8K5PvXnymY\n/tDyNWhY7UhyfJB9w3i3zGlg66zjLf21Jt1+bJKzV81dO3tVb30tOrHpe4tab30OrTzbnh5Z1PpS\nWe52DCPuB4F39t81cwPw3ar6vksyrTAic62UX5yVModWngMvm2DjM3PXNj7TW19Oy92OQd4K+Sng\nX4BXJDmV5D1J9ifZ399yCDgGHAX+Enjvkky6QhiRuVbKL85KmUMrz/gtdzI5egvbnxohBdufGmFy\n9JZlv4y63O1Y8Jp7Vd20wO0FvG9oE61wB142wcTpu+Y8vVrLERm/5U64q/fU8sSm77Ht6REOvGxi\n2X9xVsocWpnGb7mTcbr9WVjudqSrz3NfrS+oQu+FESMiabGG0Y4kh6tqbMF9xl2SVo9B4+5ny0hS\ng4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7\nJDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXI\nuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSgwaKe5I9SR5NcjTJbZe4/YVJ/i7JvyY5kuTd\nwx9VkjSoBeOeZAS4A9gL7AZuSrJ73rb3AQ9X1XXAG4A/S7JhyLNKkgY0yJn79cDRqjpWVeeA+4B9\n8/YU8MNJArwAOAOcH+qkkqSBDRL3UeDkrONT/bXZPgb8BPAY8BDwgaq6MP8bJZlIMp1kemZm5jmO\nLElayLBeUH0z8DXgpcBPAx9L8iPzN1XVZFWNVdXY5s2bh3TXkqT5Bon7aWDrrOMt/bXZ3g3cXz1H\ngW8B1w5nREnSYg0S9weBXUl29l8kvRE4OG/PCeCNAEl+HHgFcGyYg0qSBrd+oQ1VdT7JrcADwAhw\nb1UdSbK/f/vdwIeBTyR5CAjwwap6cgnnliRdwYJxB6iqQ8CheWt3z/r3Y8CvDHc0SdJz5V+oSlKD\njLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLsk\nNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4\nS1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNWiguCfZk+TRJEeT3HaZPW9I8rUkR5L8\n83DHlCQtxvqFNiQZAe4Afhk4BTyY5GBVPTxrz9XAncCeqjqR5MeWamBJ0sIGOXO/HjhaVceq6hxw\nH7Bv3p63A/dX1QmAqnpiuGNKkhZjkLiPAidnHZ/qr832cuBFSf4pyeEk77zUN0oykWQ6yfTMzMxz\nm1iStKBhvaC6HngN8FbgzcAfJHn5/E1VNVlVY1U1tnnz5iHdtSRpvgWvuQOnga2zjrf012Y7BXyn\nqp4Gnk7yBeA64JtDmVKStCiDnLk/COxKsjPJBuBG4OC8PX8LvD7J+iQbgdcCjwx3VEnSoBY8c6+q\n80luBR4ARoB7q+pIkv392++uqkeSfA74OnABuKeqvrGUg0uSLi9V1ckdj42N1fT0dCf3LUmrVZLD\nVTW20D7/QlWSGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTc\nJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalB\nxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGjRQ3JPsSfJo\nkqNJbrvCvp9Jcj7J24Y3oiRpsRaMe5IR4A5gL7AbuCnJ7svs+2Pg88MeUpK0OIOcuV8PHK2qY1V1\nDrgP2HeJfe8HPgM8McT5JEnPwSBxHwVOzjo+1V/7f0lGgV8H7rrSN0oykWQ6yfTMzMxiZ5UkDWhY\nL6h+BPhgVV240qaqmqyqsaoa27x585DuWpI03/oB9pwGts463tJfm20MuC8JwDXAW5Kcr6q/GcqU\nkqRFGSTuDwK7kuykF/UbgbfP3lBVO5/9d5JPAJ817JLUnQXjXlXnk9wKPACMAPdW1ZEk+/u3373E\nM0qSFmmQM3eq6hBwaN7aJaNeVe96/mNJkp4P/0JVkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZd\nkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk\n3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CUt\nnakp2LED1q3rfZ2a6nqiNWN91wNIatTUFExMwNmzvePjx3vHAOPj3c21RnjmLmlp3H77xbA/6+zZ\n3rqW3EBxT7InyaNJjia57RK3jyf5epKHknwxyXXDH1XSqnLixOLWNVQLxj3JCHAHsBfYDdyUZPe8\nbd8CfqGqXgl8GJgc9qCSVplt2xa3rqEa5Mz9euBoVR2rqnPAfcC+2Ruq6otV9Z/9wy8BW4Y7pqRV\n58AB2Lhx7trGjb11LblB4j4KnJx1fKq/djnvAf7+UjckmUgynWR6ZmZm8CklrT7j4zA5Cdu3Q9L7\nOjnpi6nLZKjvlknyi/Ti/vpL3V5Vk/Qv2YyNjdUw71vSCjQ+bsw7MkjcTwNbZx1v6a/NkeSngHuA\nvVX1neGMJ0l6Lga5LPMgsCvJziQbgBuBg7M3JNkG3A+8o6q+OfwxJUmLseCZe1WdT3Ir8AAwAtxb\nVUeS7O/ffjfwh8CPAncmAThfVWNLN7Yk6UpS1c2l77GxsZqenu7kviVptUpyeJCTZ/9CVZIaZNwl\nqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHG\nXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNylYZuagh07\nYN263tepqa4n0hq0vusBpKZMTcHEBJw92zs+frx3DDA+3t1cWnM8c5eG6fbbL4b9WWfP9talZWTc\nVzOf/q88J04sbl1aIsZ9tXr26f/x41B18em/ge/Wtm2LW5eWiHFfrXz6vzIdOAAbN85d27ixty4t\nI+O+Wvn0f2UaH4fJSdi+HZLe18lJX0zVsltdcfca80U+/V+5xsfh29+GCxd6Xw27OrB64u415rl8\n+q8r8URozVs9cfca81w+/dfleCIkIFW18KZkD/BRYAS4p6r+aN7t6d/+FuAs8K6q+sqVvufY2FhN\nT08PPum6db0f1O8frvf0V1LPjh29oM+3fXvvMpFWtSSHq2psoX0LnrknGQHuAPYCu4Gbkuyet20v\nsKv/3wRw16InXojXmKXB+GK7GOyyzPXA0ao6VlXngPuAffP27AM+WT1fAq5O8pKhTuo1ZmkwngiJ\nwT5bZhQ4Oev4FPDaAfaMAo/P3pRkgt6ZPcBTSR5dzLDXwItfCqNXwYZn4NxjZ8+efvLmm89w882L\n+TYtugZ4sushVpA1/XhcAy/eBtsz6+St4MKJ48ePP5mc6XK2FaCFn43tg2xa1g8Oq6pJYPL5fp8k\n04Ncc1orfDzm8vG4yMdirrX0eAxyWeY0sHXW8Zb+2mL3SJKWySBxfxDYlWRnkg3AjcDBeXsOAu9M\nzw3Ad6vq8fnfSJK0PBa8LFNV55PcCjxA762Q91bVkST7+7ffDRyi9zbIo/TeCvnupRsZGMKlncb4\neMzl43GRj8Vca+bxGOh97pKk1WX1/IWqJGlgxl2SGrTq4p5kT5JHkxxNclvX83QpydYk/5jk4SRH\nknyg65m6lmQkyVeTfLbrWbqW5Ookn07yb0keSfKzXc/UlSS/1f8d+UaSTyX5wa5nWmqrKu4DfhTC\nWnIe+O2q2g3cALxvjT8eAB8AHul6iBXio8Dnqupa4DrW6OOSZBT4DWCsqn6S3htDbux2qqW3quLO\nYB+FsGZU1ePPfkBbVf0PvV/e0W6n6k6SLcBbgXu6nqVrSV4I/DzwcYCqOldV/9XtVJ1aD/xQkvXA\nRuCxjudZcqst7pf7mIM1L8kO4FXAl7udpFMfAX4X8GNCYScwA/xV/zLVPUk2dT1UF6rqNPCnwAl6\nH4ny3ar6fLdTLb3VFnddQpIXAJ8BfrOq/rvrebqQ5FeBJ6rqcNezrBDrgVcDd1XVq4CngTX5GlWS\nF9F7hr8TeCmwKUnzH0i12uLuxxzMk+QqemGfqqr7u56nQ68Dfi3Jt+ldrvulJH/d7UidOgWcqqpn\nn8l9ml7s16I3Ad+qqpmqega4H/i5jmdacqst7oN8FMKa0f+fpHwceKSq/rzrebpUVb9XVVuqage9\nn4t/qKrmz84up6r+HTiZ5BX9pTcCD3c4UpdOADck2dj/nXkja+DF5WX9VMjn63IfhdDxWF16HfAO\n4KEkX+uv/X5VHepwJq0c7wem+idCx1j6jwVZkarqy0k+DXyF3jvMvsoa+BgCP35Akhq02i7LSJIG\nYNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIa9H/p4FiPlyrfaQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76957a4ef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADuVJREFUeJzt3W+MZXddx/H3Z2fZ6C5Kwa4GZv+SLNSNWIGxVCGKorIL\nxo2JD1qmEAjJZAtFNEapNhoS0kTjn4ChfzLWSogT+gAaXclKeeAfHiCks4CUbS2ZLOy/1nRKFW33\nwXbZrw/urTs77O7cae/MufOb9ytpds+5v8z95uTuO+eee+c0VYUkqS0buh5AkjR8xl2SGmTcJalB\nxl2SGmTcJalBxl2SGrRk3JPcm+SJJN+4zONJ8pdJ5pJ8Pcnrhj+mJGk5Bjlz/wSw7wqP7wf29P+b\nAu564WNJkl6IJeNeVV8AnrrCkgPAJ6vnS8BVSV4+rAElScu3cQg/Yxw4uWD7VH/f44sXJpmid3bP\nli1bXn/NNdcM4elX11PzJzh+dp7zubBvQ8HOTVt52dYd3Q3WkVE5HqMyh0bPQ6eOcPYSp7GbzsNr\ntr1+1eYY1mv0yJEjT1bV1qXWDSPuA6uqaWAaYGJiomZnZ1fz6Ydi1+9u5PyLL953Hjj/9FPM/ukT\nnczUpVE5HqMyh0bPhg8H8v37ny2Y/fDqNWhYr9EkxwdZN4xvy5wGti/Y3tbf16QTW763rP2tG5Xj\nMSpzaPTseGZsWftXymq/RocR90PAu/rfmrke+G5Vfd8lmVaMygtlVIzK8RiVOTR6bn/lFJufvXjf\n5md7+1fTar9GB/kq5KeAfwNeneRUkvcmOZjkYH/JYeAYMAf8FfC+FZl0RIzKC2VUjMrxGJU5NHom\nb76T6fGb2fn0GCnY+fQY0+M3M3nznas6x2q/RtPVLX/X6jV3gJm73sdtx6Y5seV77HhmjNtfObXq\nL5RRMirHY1TmkC5nGK/RJEeqamLJdcZdktaOQePu7QckqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIa\nZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwl\nqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHG\nXZIaZNwlqUHGXZIaNFDck+xL8miSuSS3XuLxlyT5hyT/nuRokvcMf1RJ0qCWjHuSMeAOYD+wF7gx\nyd5Fy94PPFxV1wJvBv48yaYhzypJGtAgZ+7XAXNVdayqzgL3AQcWrSngh5IEeDHwFHBuqJNKkgY2\nSNzHgZMLtk/19y30ceDHgceAh4APVtX5xT8oyVSS2SSz8/Pzz3NkSdJShvWB6luBrwGvAH4K+HiS\nH168qKqmq2qiqia2bt06pKeWJC02SNxPA9sXbG/r71voPcD91TMHfAu4ZjgjSpKWa5C4PwjsSbK7\n/yHpDcChRWtOAG8BSPJjwKuBY8McVJI0uI1LLaiqc0luAR4AxoB7q+pokoP9x+8GPgJ8IslDQIAP\nVdWTKzi3JOkKlow7QFUdBg4v2nf3gr8/BvzKcEeTJD1f/oaqJDXIuEtSg4y7JDXIuEtSg4y7JDXI\nuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtS\ng4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7\nJDXIuEtSg4y7JDXIuEtSgwaKe5J9SR5NMpfk1suseXOSryU5muRfhzumJGk5Ni61IMkYcAfwy8Ap\n4MEkh6rq4QVrrgLuBPZV1YkkP7pSA0uSljbImft1wFxVHauqs8B9wIFFa94B3F9VJwCq6onhjilJ\nWo5B4j4OnFywfaq/b6FXAS9N8i9JjiR516V+UJKpJLNJZufn55/fxJKkJQ3rA9WNwOuBtwNvBf4w\nyasWL6qq6aqaqKqJrVu3DumpJUmLLXnNHTgNbF+wva2/b6FTwHeq6hngmSRfAK4FvjmUKSVJyzLI\nmfuDwJ4ku5NsAm4ADi1a8/fAm5JsTLIZeAPwyHBHlSQNaskz96o6l+QW4AFgDLi3qo4mOdh//O6q\neiTJ54CvA+eBe6rqGys5uCTp8lJVnTzxxMREzc7OdvLckrRWJTlSVRNLrfM3VCWpQcZdkhpk3CWp\nQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZd\nkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk\n3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQQPFPcm+JI8mmUty6xXW/XSSc0l+Y3gjSpKW\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76956b4f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADwxJREFUeJzt3V1s3Xd9x/H3Jw7R5rJRumYT5MHJpEAXjXVQr3QDbWxs\nI4Fp1aRdtLggEFIURhmbxka3atsFirRpD4KJPsgrXYVi0QuotgxllIs9cMFAdYBR0q7ICsRJ2qku\n2dhoLtIs312c08UxSXzcHvtv//x+SZF7fucn+6vD8Vv/8z/Hf1JVSJLasqHrASRJw2fcJalBxl2S\nGmTcJalBxl2SGmTcJalBi8Y9yf1Jnk7y9cvcnyR/lWQmydeSvG74Y0qSlmKQI/cHgD1XuH8vsKv/\nbx9wz4sfS5L0Yiwa96r6PHD6CltuBj5RPV8Erk7yimENKElauo1D+B5bgBPzbp/srz21cGOSffSO\n7rnqqqtuuO6664bw41fW6blZjp+d43wurG0oGNu0mWs2b+9usK6cPg3Hj8P58xfWNmyAsTG45pr1\nN4dWn0cfhbNnv3d90yZ4zWtWbo4hPUePHDnyTFVtXmzfMOI+sKqaBCYBxsfHa3p6eiV//FDs+N2N\nnH/pxWvngfPfPc30nz3dyUyd2rHj4icr9G6fPw8r+b/vaplDq8+Gy5ygeO65NfkcTXJ8kH3D+LTM\nKWDbvNtb+2tNmr3qf5e03rzZ2aWttz6HVp/tl3lFfbn15bLCz9FhxP0Q8M7+p2ZuAr5TVd9zSqYV\n258dWdJ681bLL85qmUOrz4EDMDp68droaG99Ja3wc3SQj0J+EvhX4NVJTiZ5T5L9Sfb3txwGjgEz\nwF8Dv7Esk64SB350H6PPXbw2+lxvfV1aLb84q2UOrT4TEzA52Tu3nfS+Tk721lfSSj9Hq6qTfzfc\ncEOtVQfvfm+NfXCk8sfU2AdH6uDd7+16pG4dPFg1NlaV9L4ePLi+55AuZwjPUWC6BmhsqqPrua/V\nN1QlqUtJjlTV+GL7vPyAJDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtS\ng4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7\nJDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSgwaKe5I9\nSZ5IMpPkjkvc/7Ikf5/k35IcTfLu4Y8qSRrUonFPMgLcBewFdgO3Jtm9YNv7gMeq6nrgTcBfJNk0\n5FklSQMa5Mj9RmCmqo5V1VngQeDmBXsK+IEkAV4KnAbODXVSSdLABon7FuDEvNsn+2vzfQz4MeBJ\n4FHgA1V1fuE3SrIvyXSS6bm5uRc4siRpMcN6Q/UtwFeBVwI/CXwsyQ8u3FRVk1U1XlXjmzdvHtKP\nliQtNEjcTwHb5t3e2l+b793AQ9UzA3wTuG44I0qSlmqQuD8C7Eqys/8m6S3AoQV7ZoE3AyT5EeDV\nwLFhDipJGtzGxTZU1bkktwMPAyPA/VV1NMn+/v33Ah8GHkjyKBDgQ1X1zDLOLUm6gkXjDlBVh4HD\nC9bunfffTwK/PNzRJEkvlH+hKkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkN\nMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S\n1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1KCB\n4p5kT5InkswkueMye96U5KtJjib5l+GOKUlaio2LbUgyAtwF/BJwEngkyaGqemzenquBu4E9VTWb\n5IeXa2BJ0uIGOXK/EZipqmNVdRZ4ELh5wZ63Aw9V1SxAVT093DElSUsxSNy3ACfm3T7ZX5vvVcDL\nk/xzkiNJ3nmpb5RkX5LpJNNzc3MvbGJJ0qKG9YbqRuAG4G3AW4A/TPKqhZuqarKqxqtqfPPmzUP6\n0ZKkhRY95w6cArbNu721vzbfSeDbVfUs8GySzwPXA98YypSSpCUZ5Mj9EWBXkp1JNgG3AIcW7Pk7\n4I1JNiYZBV4PPD7cUSVJg1r0yL2qziW5HXgYGAHur6qjSfb377+3qh5P8lnga8B54L6q+vpyDi5J\nurxUVSc/eHx8vKanpzv52ZK0ViU5UlXji+3zL1QlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwl\nqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHG\nXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIa\n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\ngwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76957bb198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADsVJREFUeJzt3V+MpXddx/H3Z3dpdIpSalcD+/9ioW7ECj2WKkRRVHbB\nuDHxomUKgZBsNlJEYyLVRm9IE03UgKG0GUslpBN6AY2uZKVc+IcLhHQWkLKtJZOF/deaTqmishfb\nzX69OKfu7LC7c6Z7Zp5zfvN+JZvp85xfzvn29Ow7z3nOmaepKiRJbdnQ9QCSpNEz7pLUIOMuSQ0y\n7pLUIOMuSQ0y7pLUoGXjnuTBJM8m+eZlbk+Sv0oyn+QbSd4w+jElSSsxzJH7J4G9V7h9H7B78OcA\ncN/VjyVJuhrLxr2qvgg8f4Ul+4FPVd+XgeuSvGpUA0qSVm7TCO5jC3By0fapwb5nli5McoD+0T3X\nXnvtzTfeeOMIHn6NPf88HD8O589f2LdhA+zYAddf391cXRmX52Nc5tD4efxxOHv2B/dfcw287nVr\nN8eIXqNHjhx5rqo2L7duFHEfWlXNADMAvV6v5ubm1vLhR2Pnzov/40B/+/x5mMR/n6s1Ls/HuMyh\n8bPhMicoXnhhIl+jSY4Ps24U35Y5DWxbtL11sK9NJ06sbH/rxuX5GJc5NH62b1/Z/tWyxq/RUcT9\nEPDuwbdmbgW+V1U/cEqmGePyQhkX4/J8jMscGj/33ANTUxfvm5rq719La/waHearkJ8G/hV4bZJT\nSd6X5GCSg4Mlh4FjwDzw18Bvr8qk42JcXijjYlyej3GZQ+NnehpmZvrntpP+z5mZ/v61tNav0arq\n5M/NN99cE+uhh6p27KhK+j8feqjribo1Ls/HuMwhXc4IXqPAXA3R2FRH13Of2A9UJalDSY5UVW+5\ndV5+QJIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHG\nXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIa\nZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUFDxT3J3iRPJZlPctclbn9F\nkr9P8m9JjiZ57+hHlSQNa9m4J9kI3AvsA/YAtyfZs2TZ+4Enquom4C3AXyS5ZsSzSpKGNMyR+y3A\nfFUdq6qzwMPA/iVrCviRJAFeDjwPnBvppJKkoQ0T9y3AyUXbpwb7FvsY8JPA08DjwAer6vzSO0py\nIMlckrmFhYWXOLIkaTmj+kD1bcDXgVcDPwN8LMmPLl1UVTNV1auq3ubNm0f00JKkpYaJ+2lg26Lt\nrYN9i70XeKT65oFvAzeOZkRJ0koNE/fHgN1Jdg0+JL0NOLRkzQngrQBJfgJ4LXBslINKkoa3abkF\nVXUuyZ3Ao8BG4MGqOprk4OD2+4EPA59M8jgQ4ENV9dwqzi1JuoJl4w5QVYeBw0v23b/on58Gfm20\no0mSXip/Q1WSGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTc\nJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalB\nxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBQ8U9yd4kTyWZT3LX\nZda8JcnXkxxN8i+jHVOStBKblluQZCNwL/CrwCngsSSHquqJRWuuAz4O7K2qE0l+fLUGliQtb5gj\n91uA+ao6VlVngYeB/UvWvBN4pKpOAFTVs6MdU5K0EsPEfQtwctH2qcG+xV4DvDLJPyc5kuTdl7qj\nJAeSzCWZW1hYeGkTS5KWNaoPVDcBNwPvAN4G/HGS1yxdVFUzVdWrqt7mzZtH9NCSpKWWPecOnAa2\nLdreOti32Cngu1X1feD7Sb4I3AR8ayRTSpJWZJgj98eA3Ul2JbkGuA04tGTN3wFvTrIpyRTwRuDJ\n0Y4qSRrWskfuVXUuyZ3Ao8BG4MGqOprk4OD2+6vqySSfB74BnAceqKpvrubgkqTLS1V18sC9Xq/m\n5uY6eWxJmlRJjlRVb7l1/oaqJDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXI\nuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtS\ng4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7\nJDVoqLgn2ZvkqSTzSe66wrqfTXIuyW+NbkRJ0kotG/ckG4F7gX3AHuD2JHsus+7PgC+MekhJ0soM\nc+R+CzBfVceq6izwMLD/Eus+AHwWeHaE80mSXoJh4r4FOLlo+9Rg3/9LsgX4TeC+K91RkgNJ5pLM\nLSwsrHRWSdKQRvWB6keAD1XV+SstqqqZqupVVW/z5s0jemhJ0lKbhlhzGti2aHvrYN9iPeDhJAA3\nAG9Pcq6q/nYkU0qSVmSYuD8G7E6yi37UbwPeuXhBVe168Z+TfBL4nGGXpO4sG/eqOpfkTuBRYCPw\nYFUdTXJwcPv9qzyjJGmFhjlyp6oOA4eX7Ltk1KvqPVc/liTpavgbqpLUIOMuSQ0y7pLUIOMuSQ0y\n7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLU\nIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMuSQ0y7pLUIOMu\nSQ0y7pLUIOMuafXMzsLOnbBhQ//n7GzXE60bm7oeQFKjZmfhwAE4c6a/ffx4fxtgerq7udYJj9wl\nrY67774Q9hedOdPfr1U3VNyT7E3yVJL5JHdd4vbpJN9I8niSLyW5afSjSpooJ06sbL9Gatm4J9kI\n3AvsA/YAtyfZs2TZt4FfrKrXAR8GZkY9qKQJs337yvZrpIY5cr8FmK+qY1V1FngY2L94QVV9qar+\nc7D5ZWDraMeUNHHuuQempi7eNzXV369VN0zctwAnF22fGuy7nPcB/3CpG5IcSDKXZG5hYWH4KSVN\nnulpmJmBHTsg6f+cmfHD1DUy0m/LJPkl+nF/86Vur6oZBqdser1ejfKxJY2h6Wlj3pFh4n4a2LZo\ne+tg30WS/DTwALCvqr47mvEkSS/FMKdlHgN2J9mV5BrgNuDQ4gVJtgOPAO+qqm+NfkxJ0kose+Re\nVeeS3Ak8CmwEHqyqo0kODm6/H/gT4MeAjycBOFdVvdUbW5J0Janq5tR3r9erubm5Th5bkiZVkiPD\nHDz7G6qS1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkN\nMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S\n1CDjLo3a7Czs3AkbNvR/zs52PZHWoU1dDyA1ZXYWDhyAM2f628eP97cBpqe7m0vrjkfu0ijdffeF\nsL/ozJn+fmkNGfdJ5tv/8XPixMr2S6vEuE+qF9/+Hz8OVRfe/hv4bm3fvrL90iox7pPKt//j6Z57\nYGrq4n1TU/390hoy7pPKt//jaXoaZmZgxw5I+j9nZvwwVWtusuLuOeYLfPs/vqan4TvfgfPn+z8N\nuzowOXH3HPPFfPuvK/FAaN2bnLh7jvlivv3X5XggJCBVtfyiZC/wUWAj8EBV/emS2zO4/e3AGeA9\nVfXVK91nr9erubm54SfdsKH/Qv3B4fpvfyX17dzZD/pSO3b0TxNpoiU5UlW95dYte+SeZCNwL7AP\n2APcnmTPkmX7gN2DPweA+1Y88XI8xywNxw/bxXCnZW4B5qvqWFWdBR4G9i9Zsx/4VPV9GbguyatG\nOqnnmKXheCAkhru2zBbg5KLtU8Abh1izBXhm8aIkB+gf2QP8b5KnVjLsDXD9q2HLy+CaF+Ds02fO\nnH7ujjue5447VnI3LboBeK7rIcbIun4+boDrt8OOLDp4Kzh/4vjx488lz3c52xho4bWxY5hFa3rh\nsKqaAWau9n6SzA1zzmm98Pm4mM/HBT4XF1tPz8cwp2VOA9sWbW8d7FvpGknSGhkm7o8Bu5PsSnIN\ncBtwaMmaQ8C703cr8L2qembpHUmS1sayp2Wq6lySO4FH6X8V8sGqOprk4OD2+4HD9L8GOU//q5Dv\nXb2RgRGc2mmMz8fFfD4u8Lm42Lp5Pob6nrskabJMzm+oSpKGZtwlqUETF/cke5M8lWQ+yV1dz9Ol\nJNuS/FOSJ5IcTfLBrmfqWpKNSb6W5HNdz9K1JNcl+UySf0/yZJKf63qmriT5vcHfkW8m+XSSH+p6\nptU2UXEf8lII68k54Perag9wK/D+df58AHwQeLLrIcbER4HPV9WNwE2s0+clyRbgd4BeVf0U/S+G\n3NbtVKtvouLOcJdCWDeq6pkXL9BWVf9D/y/vlm6n6k6SrcA7gAe6nqVrSV4B/ALwCYCqOltV/9Xt\nVJ3aBPxwkk3AFPB0x/OsukmL++Uuc7DuJdkJvB74SreTdOojwB8AXiYUdgELwN8MTlM9kOTarofq\nQlWdBv4cOEH/kijfq6ovdDvV6pu0uOsSkrwc+Czwu1X1313P04Ukvw48W1VHup5lTGwC3gDcV1Wv\nB74PrMvPqJK8kv47/F3Aq4FrkzR/QapJi7uXOVgiycvoh322qh7pep4OvQn4jSTfoX+67peTPNTt\nSJ06BZyqqhffyX2GfuzXo18Bvl1VC1X1AvAI8PMdz7TqJi3uw1wKYd0Y/E9SPgE8WVV/2fU8Xaqq\nP6yqrVW1k/7r4h+rqvmjs8upqv8ATiZ57WDXW4EnOhypSyeAW5NMDf7OvJV18OHyml4V8mpd7lII\nHY/VpTcB7wIeT/L1wb4/qqrDHc6k8fEBYHZwIHSM1b8syFiqqq8k+QzwVfrfMPsa6+AyBF5+QJIa\nNGmnZSRJQzDuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDfo/+NB26dxO4YIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76956b9048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i in range(N+1):\n",
    "    plt.plot(frakcje[i][1], 'ro')\n",
    "    axes = plt.gca()\n",
    "    axes.set_ylim([0,1])\n",
    "    if i>0:\n",
    "        wzrost=frakcje[i][np.ix_([0,1],np.where(frakcje[i]>frakcje[i-1])[1])]\n",
    "        plt.plot(wzrost[0],wzrost[1], 'go')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9\n"
     ]
    }
   ],
   "source": [
    "for i in range(N):\n",
    "    if np.array_equal(indykatory[i],indykatory[i+1])==True:\n",
    "        print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "df=pd.DataFrame(df)\n",
    "df.columns=['user','x','y','w']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "      <th>w</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.040087</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0.019085</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>-0.033555</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0.032062</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0.029864</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user         x  y  w\n",
       "0     0  0.040087  0  0\n",
       "1     0  0.019085  0  0\n",
       "2     0 -0.033555  0  0\n",
       "3     0  0.032062  0  0\n",
       "4     0  0.029864  0  0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pandas import DataFrame\n",
    "from sklearn import preprocessing\n",
    "from numpy import loadtxt, where\n",
    "from pylab import scatter, show, legend, xlabel, ylabel\n",
    "\n",
    "##The sigmoid function adjusts the cost function hypotheses to adjust the algorithm proportionally for worse estimations\n",
    "def Sigmoid(z):\n",
    "    G_of_Z = float(1.0 / float((1.0 + math.exp(-1.0*z))))\n",
    "    return G_of_Z\n",
    "\n",
    "##The hypothesis is the linear combination of all the known factors x[i] and their current estimated coefficients theta[i] \n",
    "##This hypothesis will be used to calculate each instance of the Cost Function\n",
    "def Hypothesis(theta, x, w):\n",
    "    z = x-(1-math.pow((1-theta),w+1))\n",
    "    return Sigmoid(z)\n",
    "\n",
    "##For each member of the dataset, the result (Y) determines which variation of the cost function is used\n",
    "##The Y = 0 cost function punishes high probability estimations, and the Y = 1 it punishes low scores\n",
    "##The \"punishment\" makes the change in the gradient of ThetaCurrent - Average(CostFunction(Dataset)) greater\n",
    "def Cost_Function(X,Y,W,theta,m):\n",
    "    sumOfErrors = 0\n",
    "    for i in range(m):\n",
    "        hi = Hypothesis(theta,X[i],W[i])\n",
    "        error=Y[i]*math.log(hi)+(1-Y[i])*math.log(1-hi)\n",
    "        sumOfErrors += error\n",
    "    const = -1/m\n",
    "    J = const * sumOfErrors\n",
    "    return J\n",
    "\n",
    "##This function creates the gradient component for each Theta value \n",
    "##The gradient is the partial derivative by Theta of the current value of theta minus \n",
    "##a \"learning speed factor aplha\" times the average of all the cost functions for that theta\n",
    "##For each Theta there is a cost function calculated for each member of the dataset\n",
    "def Cost_Function_Derivative(X,Y,W,theta,m,alpha):\n",
    "    sumErrors = 0\n",
    "    for i in range(m):\n",
    "        xi = X[i]\n",
    "        wi = W[i]\n",
    "        hi = Hypothesis(theta,xi,wi)\n",
    "        error = -1.0*(hi - Y[i])\n",
    "        sumErrors += error\n",
    "    constant = float(alpha)/float(m)\n",
    "    J = constant * sumErrors\n",
    "\n",
    "    return J\n",
    "\n",
    "\n",
    "##For each theta, the partial differential \n",
    "##The gradient, or vector from the current point in Theta-space (each theta value is its own dimension) to the more accurate point, \n",
    "##is the vector with each dimensional component being the partial differential for each theta value\n",
    "def Gradient_Descent(X,Y,W,theta,m,alpha,w):\n",
    "    constant = alpha/m\n",
    "    CFDerivative = Cost_Function_Derivative(X,Y,W,theta,m,alpha)\n",
    "    #if type(CFDerivative)==list:\n",
    "    #    CFDerivative=CFDerivative[0] \n",
    "    new_theta = 1-math.pow((1-math.pow((1-theta),float(w+1)))+CFDerivative,1/float(w+1))\n",
    "    return [new_theta, CFDerivative]\n",
    "\n",
    "##The high level function for the LR algorithm which, for a number of steps (num_iters) finds gradients which take \n",
    "##the Theta values (coefficients of known factors) from an estimation closer (new_theta) to their \"optimum estimation\" which is the\n",
    "##set of values best representing the system in a linear combination model\n",
    "def Logistic_Regression(X,Y,W,alpha,theta,num_iters,w):\n",
    "    m = len(Y)\n",
    "    cost=[Cost_Function(X,Y,W,theta,m)]\n",
    "    Theta=[theta]\n",
    "    gradient=[0]\n",
    "    for x in range(num_iters):\n",
    "        GD = Gradient_Descent(X,Y,W,theta,m,alpha,w)\n",
    "        theta = GD[0]\n",
    "        gradient.append(GD[1])\n",
    "        cost.append(Cost_Function(X,Y,W,theta,m))\n",
    "        Theta.append(theta)\n",
    "        if abs(GD[1])<0.00001:\n",
    "            break\n",
    "        #if x % 100 == 0:\n",
    "            #here the cost function is used to present the final hypothesis of the model in the same form for each gradient-step iteration\n",
    "            #print(\"theta \", theta, \" at \",x,\"-th iteration\")\n",
    "            #print(\"cost is \", Cost_Function(X,Y,W,theta,m))\n",
    "    return [Theta,cost,gradient]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from joblib import Parallel, delayed\n",
    "import time\n",
    "def text_progessbar(seq, total=None):\n",
    "    step = 1\n",
    "    tick = time.time()\n",
    "    while True:\n",
    "        time_diff = time.time()-tick\n",
    "        avg_speed = time_diff/step\n",
    "        total_str = 'of %n' % total if total else ''\n",
    "        print('user', step, '%.2f' % time_diff, 'avg: %.2f iter/sec' % avg_speed, total_str)\n",
    "        step += 1\n",
    "        yield next(seq)\n",
    "all_bar_funcs = {\n",
    "    'txt': lambda args: lambda x: text_progessbar(x, **args),\n",
    "    'None': lambda args: iter,\n",
    "}\n",
    "def ParallelExecutor(use_bar='tqdm', **joblib_args):\n",
    "    def aprun(bar=use_bar, **tq_args):\n",
    "        def tmp(op_iter):\n",
    "            if str(bar) in all_bar_funcs.keys():\n",
    "                bar_func = all_bar_funcs[str(bar)](tq_args)\n",
    "            else:\n",
    "                raise ValueError(\"Value %s not supported as bar type\"%bar)\n",
    "            return Parallel(**joblib_args)(bar_func(op_iter))\n",
    "        return tmp\n",
    "    return aprun\n",
    "n_jobs=22\n",
    "aprun = ParallelExecutor(n_jobs=n_jobs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data preprocessing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def Estimate_theta(df,user,initial_theta,alpha,num_iters,w):\n",
    "    #print(initial_theta)\n",
    "    X=df[df['user']==user]\n",
    "    Y=X['y']\n",
    "    Y=np.array(Y)#.reshape(-1, 1)\n",
    "    W=X['w']\n",
    "    W=np.array(W)#.reshape(-1, 1)\n",
    "    #print('srednia z W to ',np.mean(W))\n",
    "    X=X['x']\n",
    "    X=np.array(X).reshape(-1, 1)\n",
    "    mini=X.min(axis=0)\n",
    "    maxi=X.max(axis=0)\n",
    "    X=((X - mini) / (maxi - mini))*2-1\n",
    "    LR=Logistic_Regression(X,Y,alpha,initial_theta,num_iters)\n",
    "    LR[0]=[(x+1)/2*(maxi-mini)+mini for x in LR[0]]\n",
    "    return LR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.005307781119568644"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "initial_theta = 0\n",
    "alpha = 0.01\n",
    "iterations = 100\n",
    "user=5\n",
    "w=10\n",
    "Estimate_theta(df,user,initial_theta,alpha,iterations,w)[0][iterations]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "user 1 0.00 avg: 0.00 iter/sec \n",
      "user 2 0.00 avg: 0.00 iter/sec \n",
      "user 3 0.00 avg: 0.00 iter/sec \n",
      "user 4 0.00 avg: 0.00 iter/sec \n",
      "user 5 0.01 avg: 0.00 iter/sec \n",
      "user 6 0.01 avg: 0.00 iter/sec \n",
      "user 7 0.01 avg: 0.00 iter/sec \n",
      "user 8 0.01 avg: 0.00 iter/sec \n",
      "user 9 0.02 avg: 0.00 iter/sec \n",
      "user 10 0.02 avg: 0.00 iter/sec \n",
      "user 11 0.02 avg: 0.00 iter/sec \n",
      "user 12 0.02 avg: 0.00 iter/sec \n",
      "user 13 0.02 avg: 0.00 iter/sec \n",
      "user 14 0.02 avg: 0.00 iter/sec \n",
      "user 15 0.03 avg: 0.00 iter/sec \n",
      "user 16 0.04 avg: 0.00 iter/sec \n",
      "user 17 0.04 avg: 0.00 iter/sec \n",
      "user 18 0.04 avg: 0.00 iter/sec \n",
      "user 19 0.04 avg: 0.00 iter/sec \n",
      "user 20 0.04 avg: 0.00 iter/sec \n",
      "user 21 0.05 avg: 0.00 iter/sec \n",
      "user 22 0.05 avg: 0.00 iter/sec \n",
      "user 23 0.05 avg: 0.00 iter/sec \n",
      "user 24 0.05 avg: 0.00 iter/sec \n",
      "user 25 0.05 avg: 0.00 iter/sec \n",
      "user 26 0.06 avg: 0.00 iter/sec \n",
      "user 27 0.06 avg: 0.00 iter/sec \n",
      "user 28 0.06 avg: 0.00 iter/sec \n",
      "user 29 0.06 avg: 0.00 iter/sec \n",
      "user 30 0.06 avg: 0.00 iter/sec \n",
      "user 31 0.07 avg: 0.00 iter/sec \n",
      "user 32 0.07 avg: 0.00 iter/sec \n",
      "user 33 0.07 avg: 0.00 iter/sec \n",
      "user 34 0.08 avg: 0.00 iter/sec \n",
      "user 35 0.08 avg: 0.00 iter/sec \n",
      "user 36 0.09 avg: 0.00 iter/sec \n",
      "user 37 0.09 avg: 0.00 iter/sec \n",
      "user 38 0.09 avg: 0.00 iter/sec \n",
      "user 39 0.09 avg: 0.00 iter/sec \n",
      "user 40 0.10 avg: 0.00 iter/sec \n",
      "user 41 0.10 avg: 0.00 iter/sec \n",
      "user 42 0.10 avg: 0.00 iter/sec \n",
      "user 43 0.10 avg: 0.00 iter/sec \n",
      "user 44 0.10 avg: 0.00 iter/sec \n",
      "user 45 7.98 avg: 0.18 iter/sec \n",
      "user 46 8.61 avg: 0.19 iter/sec \n",
      "user 47 9.31 avg: 0.20 iter/sec \n",
      "user 48 9.41 avg: 0.20 iter/sec \n",
      "user 49 9.52 avg: 0.19 iter/sec \n",
      "user 50 9.57 avg: 0.19 iter/sec \n",
      "user 51 9.81 avg: 0.19 iter/sec \n",
      "user 52 10.38 avg: 0.20 iter/sec \n",
      "user 53 10.47 avg: 0.20 iter/sec \n",
      "user 54 10.70 avg: 0.20 iter/sec \n",
      "user 55 11.15 avg: 0.20 iter/sec \n",
      "user 56 11.31 avg: 0.20 iter/sec \n",
      "user 57 11.35 avg: 0.20 iter/sec \n",
      "user 58 11.40 avg: 0.20 iter/sec \n",
      "user 59 11.45 avg: 0.19 iter/sec \n",
      "user 60 11.59 avg: 0.19 iter/sec \n",
      "user 61 11.63 avg: 0.19 iter/sec \n",
      "user 62 11.77 avg: 0.19 iter/sec \n",
      "user 63 11.82 avg: 0.19 iter/sec \n",
      "user 64 12.04 avg: 0.19 iter/sec \n",
      "user 65 12.13 avg: 0.19 iter/sec \n",
      "user 66 12.25 avg: 0.19 iter/sec \n",
      "user 67 18.22 avg: 0.27 iter/sec \n",
      "user 68 18.42 avg: 0.27 iter/sec \n",
      "user 69 19.58 avg: 0.28 iter/sec \n",
      "user 70 20.11 avg: 0.29 iter/sec \n",
      "user 71 20.16 avg: 0.28 iter/sec \n",
      "user 72 20.22 avg: 0.28 iter/sec \n",
      "user 73 20.28 avg: 0.28 iter/sec \n",
      "user 74 20.44 avg: 0.28 iter/sec \n",
      "user 75 20.67 avg: 0.28 iter/sec \n",
      "user 76 20.73 avg: 0.27 iter/sec \n",
      "user 77 21.08 avg: 0.27 iter/sec \n",
      "user 78 21.31 avg: 0.27 iter/sec \n",
      "user 79 21.40 avg: 0.27 iter/sec \n",
      "user 80 21.44 avg: 0.27 iter/sec \n",
      "user 81 21.69 avg: 0.27 iter/sec \n",
      "user 82 22.02 avg: 0.27 iter/sec \n",
      "user 83 22.09 avg: 0.27 iter/sec \n",
      "user 84 22.23 avg: 0.26 iter/sec \n",
      "user 85 22.56 avg: 0.27 iter/sec \n",
      "user 86 22.61 avg: 0.26 iter/sec \n",
      "user 87 22.65 avg: 0.26 iter/sec \n",
      "user 88 23.58 avg: 0.27 iter/sec \n",
      "user 89 27.92 avg: 0.31 iter/sec \n",
      "user 90 28.30 avg: 0.31 iter/sec \n",
      "user 91 28.45 avg: 0.31 iter/sec \n",
      "user 92 29.05 avg: 0.32 iter/sec \n",
      "user 93 29.59 avg: 0.32 iter/sec \n",
      "user 94 30.22 avg: 0.32 iter/sec \n",
      "user 95 30.94 avg: 0.33 iter/sec \n",
      "user 96 31.44 avg: 0.33 iter/sec \n",
      "user 97 31.48 avg: 0.32 iter/sec \n",
      "user 98 31.61 avg: 0.32 iter/sec \n",
      "user 99 31.74 avg: 0.32 iter/sec \n",
      "user 100 31.90 avg: 0.32 iter/sec \n",
      "user 101 31.94 avg: 0.32 iter/sec \n",
      "user 102 32.14 avg: 0.32 iter/sec \n",
      "user 103 32.36 avg: 0.31 iter/sec \n",
      "user 104 32.40 avg: 0.31 iter/sec \n",
      "user 105 32.44 avg: 0.31 iter/sec \n",
      "user 106 32.78 avg: 0.31 iter/sec \n",
      "user 107 32.82 avg: 0.31 iter/sec \n",
      "user 108 33.44 avg: 0.31 iter/sec \n",
      "user 109 34.16 avg: 0.31 iter/sec \n",
      "user 110 34.49 avg: 0.31 iter/sec \n",
      "user 111 38.26 avg: 0.34 iter/sec \n",
      "user 112 38.30 avg: 0.34 iter/sec \n",
      "user 113 38.34 avg: 0.34 iter/sec \n",
      "user 114 38.52 avg: 0.34 iter/sec \n",
      "user 115 39.15 avg: 0.34 iter/sec \n",
      "user 116 39.64 avg: 0.34 iter/sec \n",
      "user 117 40.46 avg: 0.35 iter/sec \n",
      "user 118 40.54 avg: 0.34 iter/sec \n",
      "user 119 41.00 avg: 0.34 iter/sec \n",
      "user 120 41.30 avg: 0.34 iter/sec \n",
      "user 121 41.83 avg: 0.35 iter/sec \n",
      "user 122 41.98 avg: 0.34 iter/sec \n",
      "user 123 42.03 avg: 0.34 iter/sec \n",
      "user 124 42.79 avg: 0.35 iter/sec \n",
      "user 125 42.84 avg: 0.34 iter/sec \n",
      "user 126 42.88 avg: 0.34 iter/sec \n",
      "user 127 42.92 avg: 0.34 iter/sec \n",
      "user 128 42.98 avg: 0.34 iter/sec \n",
      "user 129 43.50 avg: 0.34 iter/sec \n",
      "user 130 43.72 avg: 0.34 iter/sec \n",
      "user 131 45.19 avg: 0.34 iter/sec \n",
      "user 132 46.11 avg: 0.35 iter/sec \n",
      "user 133 47.44 avg: 0.36 iter/sec \n",
      "user 134 48.17 avg: 0.36 iter/sec \n",
      "user 135 48.21 avg: 0.36 iter/sec \n",
      "user 136 49.10 avg: 0.36 iter/sec \n",
      "user 137 49.96 avg: 0.36 iter/sec \n",
      "user 138 50.43 avg: 0.37 iter/sec \n",
      "user 139 50.75 avg: 0.37 iter/sec \n",
      "user 140 50.98 avg: 0.36 iter/sec \n",
      "user 141 51.15 avg: 0.36 iter/sec \n",
      "user 142 51.19 avg: 0.36 iter/sec \n",
      "user 143 51.44 avg: 0.36 iter/sec \n",
      "user 144 51.76 avg: 0.36 iter/sec \n",
      "user 145 52.09 avg: 0.36 iter/sec \n",
      "user 146 52.30 avg: 0.36 iter/sec \n",
      "user 147 52.46 avg: 0.36 iter/sec \n",
      "user 148 52.74 avg: 0.36 iter/sec \n",
      "user 149 52.82 avg: 0.35 iter/sec \n",
      "user 150 53.53 avg: 0.36 iter/sec \n",
      "user 151 53.86 avg: 0.36 iter/sec \n",
      "user 152 54.56 avg: 0.36 iter/sec \n",
      "user 153 55.98 avg: 0.37 iter/sec \n",
      "user 154 56.04 avg: 0.36 iter/sec \n",
      "user 155 56.36 avg: 0.36 iter/sec \n",
      "user 156 58.02 avg: 0.37 iter/sec \n",
      "user 157 58.50 avg: 0.37 iter/sec \n",
      "user 158 59.02 avg: 0.37 iter/sec \n",
      "user 159 59.99 avg: 0.38 iter/sec \n",
      "user 160 60.29 avg: 0.38 iter/sec \n",
      "user 161 61.13 avg: 0.38 iter/sec \n",
      "user 162 62.03 avg: 0.38 iter/sec \n",
      "user 163 62.08 avg: 0.38 iter/sec \n",
      "user 164 62.12 avg: 0.38 iter/sec \n",
      "user 165 62.46 avg: 0.38 iter/sec \n",
      "user 166 62.62 avg: 0.38 iter/sec \n",
      "user 167 62.67 avg: 0.38 iter/sec \n",
      "user 168 62.82 avg: 0.37 iter/sec \n",
      "user 169 63.12 avg: 0.37 iter/sec \n",
      "user 170 63.54 avg: 0.37 iter/sec \n",
      "user 171 63.75 avg: 0.37 iter/sec \n",
      "user 172 63.83 avg: 0.37 iter/sec \n",
      "user 173 64.19 avg: 0.37 iter/sec \n",
      "user 174 64.24 avg: 0.37 iter/sec \n",
      "user 175 64.65 avg: 0.37 iter/sec \n",
      "user 176 65.80 avg: 0.37 iter/sec \n",
      "user 177 66.00 avg: 0.37 iter/sec \n",
      "user 178 68.35 avg: 0.38 iter/sec \n",
      "user 179 69.32 avg: 0.39 iter/sec \n",
      "user 180 69.49 avg: 0.39 iter/sec \n",
      "user 181 69.64 avg: 0.38 iter/sec \n",
      "user 182 70.53 avg: 0.39 iter/sec \n",
      "user 183 70.96 avg: 0.39 iter/sec \n",
      "user 184 71.20 avg: 0.39 iter/sec \n",
      "user 185 72.41 avg: 0.39 iter/sec \n",
      "user 186 72.48 avg: 0.39 iter/sec \n",
      "user 187 72.52 avg: 0.39 iter/sec \n",
      "user 188 72.56 avg: 0.39 iter/sec \n",
      "user 189 72.62 avg: 0.38 iter/sec \n",
      "user 190 72.86 avg: 0.38 iter/sec \n",
      "user 191 72.90 avg: 0.38 iter/sec \n",
      "user 192 73.19 avg: 0.38 iter/sec \n",
      "user 193 73.25 avg: 0.38 iter/sec \n",
      "user 194 74.12 avg: 0.38 iter/sec \n",
      "user 195 74.52 avg: 0.38 iter/sec \n",
      "user 196 75.27 avg: 0.38 iter/sec \n",
      "user 197 75.92 avg: 0.39 iter/sec \n",
      "user 198 76.22 avg: 0.38 iter/sec \n",
      "user 199 76.81 avg: 0.39 iter/sec \n",
      "user 200 78.74 avg: 0.39 iter/sec \n",
      "user 201 79.31 avg: 0.39 iter/sec \n",
      "user 202 79.35 avg: 0.39 iter/sec \n",
      "user 203 80.80 avg: 0.40 iter/sec \n",
      "user 204 80.84 avg: 0.40 iter/sec \n",
      "user 205 80.88 avg: 0.39 iter/sec \n",
      "user 206 81.02 avg: 0.39 iter/sec \n",
      "user 207 81.74 avg: 0.39 iter/sec \n",
      "user 208 81.79 avg: 0.39 iter/sec \n",
      "user 209 82.11 avg: 0.39 iter/sec \n",
      "user 210 82.33 avg: 0.39 iter/sec \n",
      "user 211 82.38 avg: 0.39 iter/sec \n",
      "user 212 83.28 avg: 0.39 iter/sec \n",
      "user 213 83.62 avg: 0.39 iter/sec \n",
      "user 214 83.66 avg: 0.39 iter/sec \n",
      "user 215 83.71 avg: 0.39 iter/sec \n",
      "user 216 84.80 avg: 0.39 iter/sec \n",
      "user 217 85.25 avg: 0.39 iter/sec \n",
      "user 218 85.44 avg: 0.39 iter/sec \n",
      "user 219 86.23 avg: 0.39 iter/sec \n",
      "user 220 86.64 avg: 0.39 iter/sec \n",
      "user 221 87.31 avg: 0.40 iter/sec \n",
      "user 222 89.11 avg: 0.40 iter/sec \n",
      "user 223 90.57 avg: 0.41 iter/sec \n",
      "user 224 90.62 avg: 0.40 iter/sec \n",
      "user 225 90.69 avg: 0.40 iter/sec \n",
      "user 226 91.54 avg: 0.41 iter/sec \n",
      "user 227 91.59 avg: 0.40 iter/sec \n",
      "user 228 91.80 avg: 0.40 iter/sec \n",
      "user 229 92.05 avg: 0.40 iter/sec \n",
      "user 230 92.34 avg: 0.40 iter/sec \n",
      "user 231 92.40 avg: 0.40 iter/sec \n",
      "user 232 92.52 avg: 0.40 iter/sec \n",
      "user 233 92.66 avg: 0.40 iter/sec \n",
      "user 234 92.78 avg: 0.40 iter/sec \n",
      "user 235 93.31 avg: 0.40 iter/sec \n",
      "user 236 93.91 avg: 0.40 iter/sec \n",
      "user 237 94.28 avg: 0.40 iter/sec \n",
      "user 238 95.50 avg: 0.40 iter/sec \n",
      "user 239 95.62 avg: 0.40 iter/sec \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "user 240 95.70 avg: 0.40 iter/sec \n",
      "user 241 96.01 avg: 0.40 iter/sec \n",
      "user 242 97.89 avg: 0.40 iter/sec \n",
      "user 243 98.24 avg: 0.40 iter/sec \n",
      "user 244 99.01 avg: 0.41 iter/sec \n",
      "user 245 99.91 avg: 0.41 iter/sec \n",
      "user 246 100.55 avg: 0.41 iter/sec \n",
      "user 247 100.68 avg: 0.41 iter/sec \n",
      "user 248 101.30 avg: 0.41 iter/sec \n",
      "user 249 101.50 avg: 0.41 iter/sec \n",
      "user 250 101.58 avg: 0.41 iter/sec \n",
      "user 251 101.73 avg: 0.41 iter/sec \n",
      "user 252 101.80 avg: 0.40 iter/sec \n",
      "user 253 102.44 avg: 0.40 iter/sec \n",
      "user 254 102.48 avg: 0.40 iter/sec \n",
      "user 255 102.99 avg: 0.40 iter/sec \n",
      "user 256 103.85 avg: 0.41 iter/sec \n",
      "user 257 104.56 avg: 0.41 iter/sec \n",
      "user 258 104.63 avg: 0.41 iter/sec \n",
      "user 259 104.74 avg: 0.40 iter/sec \n",
      "user 260 105.44 avg: 0.41 iter/sec \n",
      "user 261 105.64 avg: 0.40 iter/sec \n",
      "user 262 105.95 avg: 0.40 iter/sec \n",
      "user 263 106.17 avg: 0.40 iter/sec \n",
      "user 264 106.43 avg: 0.40 iter/sec \n",
      "user 265 108.58 avg: 0.41 iter/sec \n",
      "user 266 109.82 avg: 0.41 iter/sec \n",
      "user 267 110.04 avg: 0.41 iter/sec \n",
      "user 268 110.13 avg: 0.41 iter/sec \n",
      "user 269 110.61 avg: 0.41 iter/sec \n",
      "user 270 111.12 avg: 0.41 iter/sec \n",
      "user 271 111.50 avg: 0.41 iter/sec \n",
      "user 272 111.76 avg: 0.41 iter/sec \n",
      "user 273 112.14 avg: 0.41 iter/sec \n",
      "user 274 112.25 avg: 0.41 iter/sec \n",
      "user 275 112.71 avg: 0.41 iter/sec \n",
      "user 276 112.95 avg: 0.41 iter/sec \n",
      "user 277 112.99 avg: 0.41 iter/sec \n",
      "user 278 113.40 avg: 0.41 iter/sec \n",
      "user 279 113.63 avg: 0.41 iter/sec \n",
      "user 280 114.96 avg: 0.41 iter/sec \n",
      "user 281 115.00 avg: 0.41 iter/sec \n",
      "user 282 115.69 avg: 0.41 iter/sec \n",
      "user 283 115.96 avg: 0.41 iter/sec \n",
      "user 284 116.15 avg: 0.41 iter/sec \n",
      "user 285 116.87 avg: 0.41 iter/sec \n",
      "user 286 118.02 avg: 0.41 iter/sec \n",
      "user 287 119.78 avg: 0.42 iter/sec \n",
      "user 288 120.77 avg: 0.42 iter/sec \n",
      "user 289 120.81 avg: 0.42 iter/sec \n",
      "user 290 120.95 avg: 0.42 iter/sec \n",
      "user 291 121.17 avg: 0.42 iter/sec \n",
      "user 292 122.00 avg: 0.42 iter/sec \n",
      "user 293 122.07 avg: 0.42 iter/sec \n",
      "user 294 122.41 avg: 0.42 iter/sec \n",
      "user 295 122.49 avg: 0.42 iter/sec \n",
      "user 296 122.57 avg: 0.41 iter/sec \n",
      "user 297 123.09 avg: 0.41 iter/sec \n",
      "user 298 123.15 avg: 0.41 iter/sec \n",
      "user 299 123.34 avg: 0.41 iter/sec \n",
      "user 300 123.38 avg: 0.41 iter/sec \n",
      "user 301 124.20 avg: 0.41 iter/sec \n",
      "user 302 125.55 avg: 0.42 iter/sec \n",
      "user 303 126.03 avg: 0.42 iter/sec \n",
      "user 304 126.07 avg: 0.41 iter/sec \n",
      "user 305 126.11 avg: 0.41 iter/sec \n",
      "user 306 126.69 avg: 0.41 iter/sec \n",
      "user 307 126.83 avg: 0.41 iter/sec \n",
      "user 308 127.16 avg: 0.41 iter/sec \n",
      "user 309 128.43 avg: 0.42 iter/sec \n",
      "user 310 129.34 avg: 0.42 iter/sec \n",
      "user 311 129.52 avg: 0.42 iter/sec \n",
      "user 312 129.78 avg: 0.42 iter/sec \n",
      "user 313 130.97 avg: 0.42 iter/sec \n",
      "user 314 131.14 avg: 0.42 iter/sec \n",
      "user 315 132.10 avg: 0.42 iter/sec \n",
      "user 316 132.89 avg: 0.42 iter/sec \n",
      "user 317 133.36 avg: 0.42 iter/sec \n",
      "user 318 133.42 avg: 0.42 iter/sec \n",
      "user 319 133.46 avg: 0.42 iter/sec \n",
      "user 320 133.75 avg: 0.42 iter/sec \n",
      "user 321 133.81 avg: 0.42 iter/sec \n",
      "user 322 134.19 avg: 0.42 iter/sec \n",
      "user 323 134.38 avg: 0.42 iter/sec \n",
      "user 324 135.79 avg: 0.42 iter/sec \n",
      "user 325 136.01 avg: 0.42 iter/sec \n",
      "user 326 136.12 avg: 0.42 iter/sec \n",
      "user 327 136.65 avg: 0.42 iter/sec \n",
      "user 328 137.51 avg: 0.42 iter/sec \n",
      "user 329 138.03 avg: 0.42 iter/sec \n",
      "user 330 138.45 avg: 0.42 iter/sec \n",
      "user 331 139.27 avg: 0.42 iter/sec \n",
      "user 332 139.60 avg: 0.42 iter/sec \n",
      "user 333 139.73 avg: 0.42 iter/sec \n",
      "user 334 140.17 avg: 0.42 iter/sec \n",
      "user 335 141.05 avg: 0.42 iter/sec \n",
      "user 336 141.48 avg: 0.42 iter/sec \n",
      "user 337 141.52 avg: 0.42 iter/sec \n",
      "user 338 142.51 avg: 0.42 iter/sec \n",
      "user 339 143.39 avg: 0.42 iter/sec \n",
      "user 340 143.50 avg: 0.42 iter/sec \n",
      "user 341 144.10 avg: 0.42 iter/sec \n",
      "user 342 144.15 avg: 0.42 iter/sec \n",
      "user 343 144.19 avg: 0.42 iter/sec \n",
      "user 344 144.25 avg: 0.42 iter/sec \n",
      "user 345 144.46 avg: 0.42 iter/sec \n",
      "user 346 144.67 avg: 0.42 iter/sec \n",
      "user 347 145.63 avg: 0.42 iter/sec \n",
      "user 348 146.90 avg: 0.42 iter/sec \n",
      "user 349 147.16 avg: 0.42 iter/sec \n",
      "user 350 147.64 avg: 0.42 iter/sec \n",
      "user 351 148.14 avg: 0.42 iter/sec \n",
      "user 352 149.73 avg: 0.43 iter/sec \n",
      "user 353 149.79 avg: 0.42 iter/sec \n",
      "user 354 150.13 avg: 0.42 iter/sec \n",
      "user 355 150.49 avg: 0.42 iter/sec \n",
      "user 356 150.93 avg: 0.42 iter/sec \n",
      "user 357 151.07 avg: 0.42 iter/sec \n",
      "user 358 151.79 avg: 0.42 iter/sec \n",
      "user 359 152.02 avg: 0.42 iter/sec \n",
      "user 360 152.73 avg: 0.42 iter/sec \n",
      "user 361 152.84 avg: 0.42 iter/sec \n",
      "user 362 154.33 avg: 0.43 iter/sec \n",
      "user 363 154.37 avg: 0.43 iter/sec \n",
      "user 364 154.54 avg: 0.42 iter/sec \n",
      "user 365 154.86 avg: 0.42 iter/sec \n",
      "user 366 155.10 avg: 0.42 iter/sec \n",
      "user 367 155.28 avg: 0.42 iter/sec \n",
      "user 368 155.34 avg: 0.42 iter/sec \n",
      "user 369 156.42 avg: 0.42 iter/sec \n",
      "user 370 157.49 avg: 0.43 iter/sec \n",
      "user 371 157.53 avg: 0.42 iter/sec \n",
      "user 372 158.43 avg: 0.43 iter/sec \n",
      "user 373 158.66 avg: 0.43 iter/sec \n",
      "user 374 158.73 avg: 0.42 iter/sec \n",
      "user 375 159.79 avg: 0.43 iter/sec \n",
      "user 376 160.09 avg: 0.43 iter/sec \n",
      "user 377 160.83 avg: 0.43 iter/sec \n",
      "user 378 160.87 avg: 0.43 iter/sec \n",
      "user 379 161.48 avg: 0.43 iter/sec \n",
      "user 380 162.06 avg: 0.43 iter/sec \n",
      "user 381 162.40 avg: 0.43 iter/sec \n",
      "user 382 162.56 avg: 0.43 iter/sec \n",
      "user 383 162.66 avg: 0.42 iter/sec \n",
      "user 384 162.72 avg: 0.42 iter/sec \n",
      "user 385 163.98 avg: 0.43 iter/sec \n",
      "user 386 164.61 avg: 0.43 iter/sec \n",
      "user 387 165.58 avg: 0.43 iter/sec \n",
      "user 388 165.77 avg: 0.43 iter/sec \n",
      "user 389 165.85 avg: 0.43 iter/sec \n",
      "user 390 165.94 avg: 0.43 iter/sec \n",
      "user 391 166.20 avg: 0.43 iter/sec \n",
      "user 392 166.32 avg: 0.42 iter/sec \n",
      "user 393 166.51 avg: 0.42 iter/sec \n",
      "user 394 168.86 avg: 0.43 iter/sec \n",
      "user 395 169.19 avg: 0.43 iter/sec \n",
      "user 396 169.23 avg: 0.43 iter/sec \n",
      "user 397 169.60 avg: 0.43 iter/sec \n",
      "user 398 170.03 avg: 0.43 iter/sec \n",
      "user 399 170.18 avg: 0.43 iter/sec \n",
      "user 400 171.37 avg: 0.43 iter/sec \n",
      "user 401 172.09 avg: 0.43 iter/sec \n",
      "user 402 172.84 avg: 0.43 iter/sec \n",
      "user 403 173.32 avg: 0.43 iter/sec \n",
      "user 404 173.51 avg: 0.43 iter/sec \n",
      "user 405 173.64 avg: 0.43 iter/sec \n",
      "user 406 174.23 avg: 0.43 iter/sec \n",
      "user 407 174.29 avg: 0.43 iter/sec \n",
      "user 408 175.11 avg: 0.43 iter/sec \n",
      "user 409 175.21 avg: 0.43 iter/sec \n",
      "user 410 175.98 avg: 0.43 iter/sec \n",
      "user 411 176.50 avg: 0.43 iter/sec \n",
      "user 412 176.87 avg: 0.43 iter/sec \n",
      "user 413 177.22 avg: 0.43 iter/sec \n",
      "user 414 177.83 avg: 0.43 iter/sec \n",
      "user 415 177.87 avg: 0.43 iter/sec \n",
      "user 416 178.65 avg: 0.43 iter/sec \n",
      "user 417 178.82 avg: 0.43 iter/sec \n",
      "user 418 179.41 avg: 0.43 iter/sec \n",
      "user 419 179.62 avg: 0.43 iter/sec \n",
      "user 420 180.16 avg: 0.43 iter/sec \n",
      "user 421 180.26 avg: 0.43 iter/sec \n",
      "user 422 181.66 avg: 0.43 iter/sec \n",
      "user 423 182.31 avg: 0.43 iter/sec \n",
      "user 424 182.98 avg: 0.43 iter/sec \n",
      "user 425 183.10 avg: 0.43 iter/sec \n",
      "user 426 183.62 avg: 0.43 iter/sec \n",
      "user 427 184.60 avg: 0.43 iter/sec \n",
      "user 428 184.74 avg: 0.43 iter/sec \n",
      "user 429 185.03 avg: 0.43 iter/sec \n",
      "user 430 185.51 avg: 0.43 iter/sec \n",
      "user 431 186.50 avg: 0.43 iter/sec \n",
      "user 432 186.75 avg: 0.43 iter/sec \n",
      "user 433 186.83 avg: 0.43 iter/sec \n",
      "user 434 187.17 avg: 0.43 iter/sec \n",
      "user 435 187.26 avg: 0.43 iter/sec \n",
      "user 436 188.19 avg: 0.43 iter/sec \n",
      "user 437 188.30 avg: 0.43 iter/sec \n",
      "user 438 188.91 avg: 0.43 iter/sec \n",
      "user 439 189.16 avg: 0.43 iter/sec \n",
      "user 440 189.20 avg: 0.43 iter/sec \n",
      "user 441 189.86 avg: 0.43 iter/sec \n",
      "user 442 190.00 avg: 0.43 iter/sec \n",
      "user 443 190.30 avg: 0.43 iter/sec \n",
      "user 444 190.84 avg: 0.43 iter/sec \n",
      "user 445 192.47 avg: 0.43 iter/sec \n",
      "user 446 193.35 avg: 0.43 iter/sec \n",
      "user 447 193.68 avg: 0.43 iter/sec \n",
      "user 448 193.87 avg: 0.43 iter/sec \n",
      "user 449 194.56 avg: 0.43 iter/sec \n",
      "user 450 194.69 avg: 0.43 iter/sec \n",
      "user 451 195.17 avg: 0.43 iter/sec \n",
      "user 452 195.62 avg: 0.43 iter/sec \n",
      "user 453 196.09 avg: 0.43 iter/sec \n",
      "user 454 196.26 avg: 0.43 iter/sec \n",
      "user 455 196.38 avg: 0.43 iter/sec \n",
      "user 456 197.62 avg: 0.43 iter/sec \n",
      "user 457 198.12 avg: 0.43 iter/sec \n",
      "user 458 198.41 avg: 0.43 iter/sec \n",
      "user 459 198.59 avg: 0.43 iter/sec \n",
      "user 460 198.68 avg: 0.43 iter/sec \n",
      "user 461 199.10 avg: 0.43 iter/sec \n",
      "user 462 199.27 avg: 0.43 iter/sec \n",
      "user 463 199.69 avg: 0.43 iter/sec \n",
      "user 464 200.33 avg: 0.43 iter/sec \n",
      "user 465 200.47 avg: 0.43 iter/sec \n",
      "user 466 201.18 avg: 0.43 iter/sec \n",
      "user 467 201.37 avg: 0.43 iter/sec \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "user 468 203.46 avg: 0.43 iter/sec \n",
      "user 469 204.09 avg: 0.44 iter/sec \n",
      "user 470 204.87 avg: 0.44 iter/sec \n",
      "user 471 205.01 avg: 0.44 iter/sec \n",
      "user 472 205.18 avg: 0.43 iter/sec \n",
      "user 473 206.34 avg: 0.44 iter/sec \n",
      "user 474 206.43 avg: 0.44 iter/sec \n",
      "user 475 206.47 avg: 0.43 iter/sec \n",
      "user 476 207.04 avg: 0.43 iter/sec \n",
      "user 477 207.48 avg: 0.43 iter/sec \n",
      "user 478 207.65 avg: 0.43 iter/sec \n",
      "user 479 208.15 avg: 0.43 iter/sec \n",
      "user 480 208.42 avg: 0.43 iter/sec \n",
      "user 481 208.66 avg: 0.43 iter/sec \n",
      "user 482 208.90 avg: 0.43 iter/sec \n",
      "user 483 209.03 avg: 0.43 iter/sec \n",
      "user 484 209.98 avg: 0.43 iter/sec \n",
      "user 485 210.64 avg: 0.43 iter/sec \n",
      "user 486 210.68 avg: 0.43 iter/sec \n",
      "user 487 210.74 avg: 0.43 iter/sec \n",
      "user 488 211.05 avg: 0.43 iter/sec \n",
      "user 489 211.27 avg: 0.43 iter/sec \n",
      "user 490 214.18 avg: 0.44 iter/sec \n",
      "user 491 214.96 avg: 0.44 iter/sec \n",
      "user 492 215.06 avg: 0.44 iter/sec \n",
      "user 493 215.74 avg: 0.44 iter/sec \n",
      "user 494 215.92 avg: 0.44 iter/sec \n",
      "user 495 216.24 avg: 0.44 iter/sec \n",
      "user 496 216.45 avg: 0.44 iter/sec \n",
      "user 497 216.60 avg: 0.44 iter/sec \n",
      "user 498 217.06 avg: 0.44 iter/sec \n",
      "user 499 217.80 avg: 0.44 iter/sec \n",
      "user 500 217.87 avg: 0.44 iter/sec \n",
      "user 501 217.94 avg: 0.44 iter/sec \n",
      "user 502 218.17 avg: 0.43 iter/sec \n",
      "user 503 218.44 avg: 0.43 iter/sec \n",
      "user 504 218.86 avg: 0.43 iter/sec \n",
      "user 505 219.66 avg: 0.43 iter/sec \n",
      "user 506 219.76 avg: 0.43 iter/sec \n",
      "user 507 220.09 avg: 0.43 iter/sec \n",
      "user 508 220.15 avg: 0.43 iter/sec \n",
      "user 509 220.78 avg: 0.43 iter/sec \n",
      "user 510 221.44 avg: 0.43 iter/sec \n",
      "user 511 221.79 avg: 0.43 iter/sec \n",
      "user 512 223.61 avg: 0.44 iter/sec \n",
      "user 513 224.60 avg: 0.44 iter/sec \n",
      "user 514 225.29 avg: 0.44 iter/sec \n",
      "user 515 226.54 avg: 0.44 iter/sec \n",
      "user 516 226.66 avg: 0.44 iter/sec \n",
      "user 517 226.76 avg: 0.44 iter/sec \n",
      "user 518 226.80 avg: 0.44 iter/sec \n",
      "user 519 226.91 avg: 0.44 iter/sec \n",
      "user 520 226.95 avg: 0.44 iter/sec \n",
      "user 521 227.00 avg: 0.44 iter/sec \n",
      "user 522 227.83 avg: 0.44 iter/sec \n",
      "user 523 228.12 avg: 0.44 iter/sec \n",
      "user 524 228.39 avg: 0.44 iter/sec \n",
      "user 525 228.76 avg: 0.44 iter/sec \n",
      "user 526 229.10 avg: 0.44 iter/sec \n",
      "user 527 229.63 avg: 0.44 iter/sec \n",
      "user 528 229.67 avg: 0.43 iter/sec \n",
      "user 529 230.68 avg: 0.44 iter/sec \n",
      "user 530 231.09 avg: 0.44 iter/sec \n",
      "user 531 231.56 avg: 0.44 iter/sec \n",
      "user 532 232.31 avg: 0.44 iter/sec \n",
      "user 533 232.83 avg: 0.44 iter/sec \n",
      "user 534 234.36 avg: 0.44 iter/sec \n",
      "user 535 234.61 avg: 0.44 iter/sec \n",
      "user 536 235.60 avg: 0.44 iter/sec \n",
      "user 537 235.81 avg: 0.44 iter/sec \n",
      "user 538 236.21 avg: 0.44 iter/sec \n",
      "user 539 237.36 avg: 0.44 iter/sec \n",
      "user 540 237.63 avg: 0.44 iter/sec \n",
      "user 541 237.81 avg: 0.44 iter/sec \n",
      "user 542 237.92 avg: 0.44 iter/sec \n",
      "user 543 237.96 avg: 0.44 iter/sec \n",
      "user 544 238.11 avg: 0.44 iter/sec \n",
      "user 545 238.15 avg: 0.44 iter/sec \n",
      "user 546 238.30 avg: 0.44 iter/sec \n",
      "user 547 238.89 avg: 0.44 iter/sec \n",
      "user 548 239.00 avg: 0.44 iter/sec \n",
      "user 549 239.59 avg: 0.44 iter/sec \n",
      "user 550 240.03 avg: 0.44 iter/sec \n",
      "user 551 241.67 avg: 0.44 iter/sec \n",
      "user 552 242.04 avg: 0.44 iter/sec \n",
      "user 553 242.08 avg: 0.44 iter/sec \n",
      "user 554 242.56 avg: 0.44 iter/sec \n",
      "user 555 242.74 avg: 0.44 iter/sec \n",
      "user 556 243.92 avg: 0.44 iter/sec \n",
      "user 557 244.07 avg: 0.44 iter/sec \n",
      "user 558 245.65 avg: 0.44 iter/sec \n",
      "user 559 245.85 avg: 0.44 iter/sec \n",
      "user 560 246.12 avg: 0.44 iter/sec \n",
      "user 561 246.55 avg: 0.44 iter/sec \n",
      "user 562 246.64 avg: 0.44 iter/sec \n",
      "user 563 246.82 avg: 0.44 iter/sec \n",
      "user 564 247.74 avg: 0.44 iter/sec \n",
      "user 565 247.96 avg: 0.44 iter/sec \n",
      "user 566 248.14 avg: 0.44 iter/sec \n",
      "user 567 248.18 avg: 0.44 iter/sec \n",
      "user 568 249.28 avg: 0.44 iter/sec \n",
      "user 569 249.56 avg: 0.44 iter/sec \n",
      "user 570 249.94 avg: 0.44 iter/sec \n",
      "user 571 250.20 avg: 0.44 iter/sec \n",
      "user 572 251.00 avg: 0.44 iter/sec \n",
      "user 573 251.39 avg: 0.44 iter/sec \n",
      "user 574 252.19 avg: 0.44 iter/sec \n",
      "user 575 252.51 avg: 0.44 iter/sec \n",
      "user 576 252.57 avg: 0.44 iter/sec \n",
      "user 577 253.02 avg: 0.44 iter/sec \n",
      "user 578 253.13 avg: 0.44 iter/sec \n",
      "user 579 254.64 avg: 0.44 iter/sec \n",
      "user 580 256.38 avg: 0.44 iter/sec \n",
      "user 581 256.63 avg: 0.44 iter/sec \n",
      "user 582 256.82 avg: 0.44 iter/sec \n",
      "user 583 256.86 avg: 0.44 iter/sec \n",
      "user 584 256.90 avg: 0.44 iter/sec \n",
      "user 585 257.13 avg: 0.44 iter/sec \n",
      "user 586 258.00 avg: 0.44 iter/sec \n",
      "user 587 258.08 avg: 0.44 iter/sec \n",
      "user 588 259.21 avg: 0.44 iter/sec \n",
      "user 589 259.31 avg: 0.44 iter/sec \n",
      "user 590 259.36 avg: 0.44 iter/sec \n",
      "user 591 259.83 avg: 0.44 iter/sec \n",
      "user 592 260.11 avg: 0.44 iter/sec \n",
      "user 593 260.60 avg: 0.44 iter/sec \n",
      "user 594 260.87 avg: 0.44 iter/sec \n",
      "user 595 262.07 avg: 0.44 iter/sec \n",
      "user 596 262.13 avg: 0.44 iter/sec \n",
      "user 597 262.69 avg: 0.44 iter/sec \n",
      "user 598 262.73 avg: 0.44 iter/sec \n",
      "user 599 262.85 avg: 0.44 iter/sec \n",
      "user 600 264.75 avg: 0.44 iter/sec \n",
      "user 601 265.41 avg: 0.44 iter/sec \n",
      "user 602 265.70 avg: 0.44 iter/sec \n",
      "user 603 266.27 avg: 0.44 iter/sec \n",
      "user 604 266.58 avg: 0.44 iter/sec \n",
      "user 605 266.62 avg: 0.44 iter/sec \n",
      "user 606 267.31 avg: 0.44 iter/sec \n",
      "user 607 267.54 avg: 0.44 iter/sec \n",
      "user 608 267.60 avg: 0.44 iter/sec \n",
      "user 609 267.94 avg: 0.44 iter/sec \n",
      "user 610 268.13 avg: 0.44 iter/sec \n",
      "user 611 268.57 avg: 0.44 iter/sec \n",
      "user 612 268.63 avg: 0.44 iter/sec \n",
      "user 613 269.15 avg: 0.44 iter/sec \n",
      "user 614 269.78 avg: 0.44 iter/sec \n",
      "user 615 270.86 avg: 0.44 iter/sec \n",
      "user 616 270.95 avg: 0.44 iter/sec \n",
      "user 617 271.03 avg: 0.44 iter/sec \n",
      "user 618 273.00 avg: 0.44 iter/sec \n",
      "user 619 273.46 avg: 0.44 iter/sec \n",
      "user 620 273.71 avg: 0.44 iter/sec \n",
      "user 621 273.78 avg: 0.44 iter/sec \n",
      "user 622 274.33 avg: 0.44 iter/sec \n",
      "user 623 274.69 avg: 0.44 iter/sec \n",
      "user 624 275.71 avg: 0.44 iter/sec \n",
      "user 625 276.14 avg: 0.44 iter/sec \n",
      "user 626 276.22 avg: 0.44 iter/sec \n",
      "user 627 276.43 avg: 0.44 iter/sec \n",
      "user 628 276.80 avg: 0.44 iter/sec \n",
      "user 629 277.35 avg: 0.44 iter/sec \n",
      "user 630 277.98 avg: 0.44 iter/sec \n",
      "user 631 278.34 avg: 0.44 iter/sec \n",
      "user 632 278.38 avg: 0.44 iter/sec \n",
      "user 633 278.79 avg: 0.44 iter/sec \n",
      "user 634 279.31 avg: 0.44 iter/sec \n",
      "user 635 279.65 avg: 0.44 iter/sec \n",
      "user 636 280.60 avg: 0.44 iter/sec \n",
      "user 637 280.97 avg: 0.44 iter/sec \n",
      "user 638 281.72 avg: 0.44 iter/sec \n",
      "user 639 281.98 avg: 0.44 iter/sec \n",
      "user 640 282.42 avg: 0.44 iter/sec \n",
      "user 641 283.33 avg: 0.44 iter/sec \n",
      "user 642 284.04 avg: 0.44 iter/sec \n",
      "user 643 284.82 avg: 0.44 iter/sec \n",
      "user 644 285.61 avg: 0.44 iter/sec \n",
      "user 645 285.77 avg: 0.44 iter/sec \n",
      "user 646 286.47 avg: 0.44 iter/sec \n",
      "user 647 286.72 avg: 0.44 iter/sec \n",
      "user 648 286.87 avg: 0.44 iter/sec \n",
      "user 649 287.13 avg: 0.44 iter/sec \n",
      "user 650 287.21 avg: 0.44 iter/sec \n",
      "user 651 287.44 avg: 0.44 iter/sec \n",
      "user 652 287.78 avg: 0.44 iter/sec \n",
      "user 653 288.04 avg: 0.44 iter/sec \n",
      "user 654 288.90 avg: 0.44 iter/sec \n",
      "user 655 289.39 avg: 0.44 iter/sec \n",
      "user 656 289.52 avg: 0.44 iter/sec \n",
      "user 657 290.87 avg: 0.44 iter/sec \n",
      "user 658 291.49 avg: 0.44 iter/sec \n",
      "user 659 292.35 avg: 0.44 iter/sec \n",
      "user 660 292.46 avg: 0.44 iter/sec \n",
      "user 661 292.54 avg: 0.44 iter/sec \n",
      "user 662 293.52 avg: 0.44 iter/sec \n",
      "user 663 294.20 avg: 0.44 iter/sec \n",
      "user 664 295.05 avg: 0.44 iter/sec \n",
      "user 665 295.11 avg: 0.44 iter/sec \n",
      "user 666 295.56 avg: 0.44 iter/sec \n",
      "user 667 296.27 avg: 0.44 iter/sec \n",
      "user 668 296.52 avg: 0.44 iter/sec \n",
      "user 669 297.02 avg: 0.44 iter/sec \n",
      "user 670 297.20 avg: 0.44 iter/sec \n",
      "user 671 297.33 avg: 0.44 iter/sec \n",
      "user 672 297.78 avg: 0.44 iter/sec \n",
      "user 673 297.93 avg: 0.44 iter/sec \n",
      "user 674 298.16 avg: 0.44 iter/sec \n",
      "user 675 298.20 avg: 0.44 iter/sec \n",
      "user 676 298.88 avg: 0.44 iter/sec \n",
      "user 677 300.50 avg: 0.44 iter/sec \n",
      "user 678 300.85 avg: 0.44 iter/sec \n",
      "user 679 302.19 avg: 0.45 iter/sec \n",
      "user 680 302.78 avg: 0.45 iter/sec \n",
      "user 681 303.05 avg: 0.45 iter/sec \n",
      "user 682 303.42 avg: 0.44 iter/sec \n",
      "user 683 303.69 avg: 0.44 iter/sec \n",
      "user 684 304.29 avg: 0.44 iter/sec \n",
      "user 685 304.85 avg: 0.45 iter/sec \n",
      "user 686 304.89 avg: 0.44 iter/sec \n",
      "user 687 304.94 avg: 0.44 iter/sec \n",
      "user 688 305.22 avg: 0.44 iter/sec \n",
      "user 689 305.39 avg: 0.44 iter/sec \n",
      "user 690 305.43 avg: 0.44 iter/sec \n",
      "user 691 306.99 avg: 0.44 iter/sec \n",
      "user 692 307.20 avg: 0.44 iter/sec \n",
      "user 693 307.62 avg: 0.44 iter/sec \n",
      "user 694 307.93 avg: 0.44 iter/sec \n",
      "user 695 308.14 avg: 0.44 iter/sec \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "user 696 308.38 avg: 0.44 iter/sec \n",
      "user 697 308.59 avg: 0.44 iter/sec \n",
      "user 698 308.79 avg: 0.44 iter/sec \n",
      "user 699 310.37 avg: 0.44 iter/sec \n",
      "user 700 311.44 avg: 0.44 iter/sec \n",
      "user 701 312.08 avg: 0.45 iter/sec \n",
      "user 702 313.38 avg: 0.45 iter/sec \n",
      "user 703 313.49 avg: 0.45 iter/sec \n",
      "user 704 314.68 avg: 0.45 iter/sec \n",
      "user 705 314.72 avg: 0.45 iter/sec \n",
      "user 706 314.76 avg: 0.45 iter/sec \n",
      "user 707 315.03 avg: 0.45 iter/sec \n",
      "user 708 315.31 avg: 0.45 iter/sec \n",
      "user 709 315.44 avg: 0.44 iter/sec \n",
      "user 710 316.16 avg: 0.45 iter/sec \n",
      "user 711 316.54 avg: 0.45 iter/sec \n",
      "user 712 317.16 avg: 0.45 iter/sec \n",
      "user 713 317.22 avg: 0.44 iter/sec \n",
      "user 714 317.26 avg: 0.44 iter/sec \n",
      "user 715 317.30 avg: 0.44 iter/sec \n",
      "user 716 317.58 avg: 0.44 iter/sec \n",
      "user 717 318.92 avg: 0.44 iter/sec \n",
      "user 718 319.47 avg: 0.44 iter/sec \n",
      "user 719 320.04 avg: 0.45 iter/sec \n",
      "user 720 320.16 avg: 0.44 iter/sec \n",
      "user 721 320.21 avg: 0.44 iter/sec \n",
      "user 722 320.33 avg: 0.44 iter/sec \n",
      "user 723 323.17 avg: 0.45 iter/sec \n",
      "user 724 323.81 avg: 0.45 iter/sec \n",
      "user 725 324.44 avg: 0.45 iter/sec \n",
      "user 726 324.72 avg: 0.45 iter/sec \n",
      "user 727 324.97 avg: 0.45 iter/sec \n",
      "user 728 325.23 avg: 0.45 iter/sec \n",
      "user 729 325.53 avg: 0.45 iter/sec \n",
      "user 730 325.73 avg: 0.45 iter/sec \n",
      "user 731 326.04 avg: 0.45 iter/sec \n",
      "user 732 326.59 avg: 0.45 iter/sec \n",
      "user 733 326.92 avg: 0.45 iter/sec \n",
      "user 734 327.39 avg: 0.45 iter/sec \n",
      "user 735 327.71 avg: 0.45 iter/sec \n",
      "user 736 327.75 avg: 0.45 iter/sec \n",
      "user 737 327.86 avg: 0.44 iter/sec \n",
      "user 738 327.96 avg: 0.44 iter/sec \n",
      "user 739 328.17 avg: 0.44 iter/sec \n",
      "user 740 329.19 avg: 0.44 iter/sec \n",
      "user 741 330.13 avg: 0.45 iter/sec \n",
      "user 742 330.41 avg: 0.45 iter/sec \n",
      "user 743 331.28 avg: 0.45 iter/sec \n",
      "user 744 331.37 avg: 0.45 iter/sec \n",
      "user 745 333.11 avg: 0.45 iter/sec \n",
      "user 746 333.77 avg: 0.45 iter/sec \n",
      "user 747 333.85 avg: 0.45 iter/sec \n",
      "user 748 333.89 avg: 0.45 iter/sec \n",
      "user 749 334.28 avg: 0.45 iter/sec \n",
      "user 750 335.59 avg: 0.45 iter/sec \n",
      "user 751 336.30 avg: 0.45 iter/sec \n",
      "user 752 336.86 avg: 0.45 iter/sec \n",
      "user 753 336.96 avg: 0.45 iter/sec \n",
      "user 754 337.00 avg: 0.45 iter/sec \n",
      "user 755 337.04 avg: 0.45 iter/sec \n",
      "user 756 337.11 avg: 0.45 iter/sec \n",
      "user 757 338.04 avg: 0.45 iter/sec \n",
      "user 758 338.15 avg: 0.45 iter/sec \n",
      "user 759 338.47 avg: 0.45 iter/sec \n",
      "user 760 338.60 avg: 0.45 iter/sec \n",
      "user 761 338.72 avg: 0.45 iter/sec \n",
      "user 762 338.76 avg: 0.44 iter/sec \n",
      "user 763 339.19 avg: 0.44 iter/sec \n",
      "user 764 341.24 avg: 0.45 iter/sec \n",
      "user 765 341.42 avg: 0.45 iter/sec \n",
      "user 766 341.72 avg: 0.45 iter/sec \n",
      "user 767 343.18 avg: 0.45 iter/sec \n",
      "user 768 343.39 avg: 0.45 iter/sec \n",
      "user 769 343.94 avg: 0.45 iter/sec \n",
      "user 770 344.04 avg: 0.45 iter/sec \n",
      "user 771 344.14 avg: 0.45 iter/sec \n",
      "user 772 345.85 avg: 0.45 iter/sec \n",
      "user 773 346.11 avg: 0.45 iter/sec \n",
      "user 774 346.18 avg: 0.45 iter/sec \n",
      "user 775 346.40 avg: 0.45 iter/sec \n",
      "user 776 346.70 avg: 0.45 iter/sec \n",
      "user 777 347.77 avg: 0.45 iter/sec \n",
      "user 778 347.94 avg: 0.45 iter/sec \n",
      "user 779 348.17 avg: 0.45 iter/sec \n",
      "user 780 348.79 avg: 0.45 iter/sec \n",
      "user 781 349.25 avg: 0.45 iter/sec \n",
      "user 782 349.56 avg: 0.45 iter/sec \n",
      "user 783 349.68 avg: 0.45 iter/sec \n",
      "user 784 350.48 avg: 0.45 iter/sec \n",
      "user 785 350.57 avg: 0.45 iter/sec \n",
      "user 786 350.85 avg: 0.45 iter/sec \n",
      "user 787 351.94 avg: 0.45 iter/sec \n",
      "user 788 352.49 avg: 0.45 iter/sec \n",
      "user 789 352.70 avg: 0.45 iter/sec \n",
      "user 790 352.84 avg: 0.45 iter/sec \n",
      "user 791 353.60 avg: 0.45 iter/sec \n",
      "user 792 353.82 avg: 0.45 iter/sec \n",
      "user 793 354.00 avg: 0.45 iter/sec \n",
      "user 794 355.91 avg: 0.45 iter/sec \n",
      "user 795 356.42 avg: 0.45 iter/sec \n",
      "user 796 356.75 avg: 0.45 iter/sec \n",
      "user 797 357.30 avg: 0.45 iter/sec \n",
      "user 798 357.58 avg: 0.45 iter/sec \n",
      "user 799 357.83 avg: 0.45 iter/sec \n",
      "user 800 357.89 avg: 0.45 iter/sec \n",
      "user 801 358.07 avg: 0.45 iter/sec \n",
      "user 802 358.32 avg: 0.45 iter/sec \n",
      "user 803 358.38 avg: 0.45 iter/sec \n",
      "user 804 359.86 avg: 0.45 iter/sec \n",
      "user 805 360.39 avg: 0.45 iter/sec \n",
      "user 806 360.58 avg: 0.45 iter/sec \n",
      "user 807 360.62 avg: 0.45 iter/sec \n",
      "user 808 361.26 avg: 0.45 iter/sec \n",
      "user 809 361.53 avg: 0.45 iter/sec \n",
      "user 810 361.90 avg: 0.45 iter/sec \n",
      "user 811 362.53 avg: 0.45 iter/sec \n",
      "user 812 363.31 avg: 0.45 iter/sec \n",
      "user 813 364.18 avg: 0.45 iter/sec \n",
      "user 814 365.05 avg: 0.45 iter/sec \n",
      "user 815 365.19 avg: 0.45 iter/sec \n",
      "user 816 365.23 avg: 0.45 iter/sec \n",
      "user 817 365.93 avg: 0.45 iter/sec \n",
      "user 818 366.03 avg: 0.45 iter/sec \n",
      "user 819 367.23 avg: 0.45 iter/sec \n",
      "user 820 367.27 avg: 0.45 iter/sec \n",
      "user 821 367.55 avg: 0.45 iter/sec \n",
      "user 822 367.73 avg: 0.45 iter/sec \n",
      "user 823 367.93 avg: 0.45 iter/sec \n",
      "user 824 368.47 avg: 0.45 iter/sec \n",
      "user 825 368.78 avg: 0.45 iter/sec \n",
      "user 826 370.34 avg: 0.45 iter/sec \n",
      "user 827 371.03 avg: 0.45 iter/sec \n",
      "user 828 371.45 avg: 0.45 iter/sec \n",
      "user 829 371.53 avg: 0.45 iter/sec \n",
      "user 830 371.58 avg: 0.45 iter/sec \n",
      "user 831 372.43 avg: 0.45 iter/sec \n",
      "user 832 372.92 avg: 0.45 iter/sec \n",
      "user 833 373.90 avg: 0.45 iter/sec \n",
      "user 834 374.25 avg: 0.45 iter/sec \n",
      "user 835 375.18 avg: 0.45 iter/sec \n",
      "user 836 375.27 avg: 0.45 iter/sec \n",
      "user 837 375.69 avg: 0.45 iter/sec \n",
      "user 838 375.97 avg: 0.45 iter/sec \n",
      "user 839 376.08 avg: 0.45 iter/sec \n",
      "user 840 376.12 avg: 0.45 iter/sec \n",
      "user 841 377.11 avg: 0.45 iter/sec \n",
      "user 842 377.18 avg: 0.45 iter/sec \n",
      "user 843 377.94 avg: 0.45 iter/sec \n",
      "user 844 378.01 avg: 0.45 iter/sec \n",
      "user 845 378.40 avg: 0.45 iter/sec \n",
      "user 846 379.38 avg: 0.45 iter/sec \n",
      "user 847 379.43 avg: 0.45 iter/sec \n",
      "user 848 379.61 avg: 0.45 iter/sec \n",
      "user 849 382.21 avg: 0.45 iter/sec \n",
      "user 850 382.33 avg: 0.45 iter/sec \n",
      "user 851 382.43 avg: 0.45 iter/sec \n",
      "user 852 382.49 avg: 0.45 iter/sec \n",
      "user 853 383.01 avg: 0.45 iter/sec \n",
      "user 854 383.34 avg: 0.45 iter/sec \n",
      "user 855 383.73 avg: 0.45 iter/sec \n",
      "user 856 383.83 avg: 0.45 iter/sec \n",
      "user 857 384.63 avg: 0.45 iter/sec \n",
      "user 858 384.88 avg: 0.45 iter/sec \n",
      "user 859 385.10 avg: 0.45 iter/sec \n",
      "user 860 385.91 avg: 0.45 iter/sec \n",
      "user 861 386.57 avg: 0.45 iter/sec \n",
      "user 862 387.20 avg: 0.45 iter/sec \n",
      "user 863 387.47 avg: 0.45 iter/sec \n",
      "user 864 387.69 avg: 0.45 iter/sec \n",
      "user 865 388.86 avg: 0.45 iter/sec \n",
      "user 866 388.97 avg: 0.45 iter/sec \n",
      "user 867 389.10 avg: 0.45 iter/sec \n",
      "user 868 389.19 avg: 0.45 iter/sec \n",
      "user 869 390.04 avg: 0.45 iter/sec \n",
      "user 870 390.99 avg: 0.45 iter/sec \n",
      "user 871 391.18 avg: 0.45 iter/sec \n",
      "user 872 391.94 avg: 0.45 iter/sec \n",
      "user 873 392.85 avg: 0.45 iter/sec \n",
      "user 874 393.07 avg: 0.45 iter/sec \n",
      "user 875 393.78 avg: 0.45 iter/sec \n",
      "user 876 393.83 avg: 0.45 iter/sec \n",
      "user 877 394.04 avg: 0.45 iter/sec \n",
      "user 878 394.60 avg: 0.45 iter/sec \n",
      "user 879 395.49 avg: 0.45 iter/sec \n",
      "user 880 396.17 avg: 0.45 iter/sec \n",
      "user 881 396.27 avg: 0.45 iter/sec \n",
      "user 882 396.40 avg: 0.45 iter/sec \n",
      "user 883 397.22 avg: 0.45 iter/sec \n",
      "user 884 398.08 avg: 0.45 iter/sec \n",
      "user 885 398.35 avg: 0.45 iter/sec \n",
      "user 886 398.42 avg: 0.45 iter/sec \n",
      "user 887 398.66 avg: 0.45 iter/sec \n",
      "user 888 398.73 avg: 0.45 iter/sec \n",
      "user 889 399.41 avg: 0.45 iter/sec \n",
      "user 890 399.77 avg: 0.45 iter/sec \n",
      "user 891 400.96 avg: 0.45 iter/sec \n",
      "user 892 401.21 avg: 0.45 iter/sec \n",
      "user 893 401.26 avg: 0.45 iter/sec \n",
      "user 894 402.56 avg: 0.45 iter/sec \n",
      "user 895 403.11 avg: 0.45 iter/sec \n",
      "user 896 403.53 avg: 0.45 iter/sec \n",
      "user 897 403.79 avg: 0.45 iter/sec \n",
      "user 898 404.37 avg: 0.45 iter/sec \n",
      "user 899 404.87 avg: 0.45 iter/sec \n",
      "user 900 405.19 avg: 0.45 iter/sec \n",
      "user 901 405.77 avg: 0.45 iter/sec \n",
      "user 902 405.85 avg: 0.45 iter/sec \n",
      "user 903 406.62 avg: 0.45 iter/sec \n",
      "user 904 406.75 avg: 0.45 iter/sec \n",
      "user 905 407.25 avg: 0.45 iter/sec \n",
      "user 906 408.71 avg: 0.45 iter/sec \n",
      "user 907 408.77 avg: 0.45 iter/sec \n",
      "user 908 408.81 avg: 0.45 iter/sec \n",
      "user 909 409.14 avg: 0.45 iter/sec \n",
      "user 910 409.95 avg: 0.45 iter/sec \n",
      "user 911 410.03 avg: 0.45 iter/sec \n",
      "user 912 410.22 avg: 0.45 iter/sec \n",
      "user 913 410.39 avg: 0.45 iter/sec \n",
      "user 914 411.02 avg: 0.45 iter/sec \n",
      "user 915 411.21 avg: 0.45 iter/sec \n",
      "user 916 412.66 avg: 0.45 iter/sec \n",
      "user 917 413.90 avg: 0.45 iter/sec \n",
      "user 918 414.01 avg: 0.45 iter/sec \n",
      "user 919 414.77 avg: 0.45 iter/sec \n",
      "user 920 415.02 avg: 0.45 iter/sec \n",
      "user 921 415.09 avg: 0.45 iter/sec \n",
      "user 922 415.25 avg: 0.45 iter/sec \n",
      "user 923 415.63 avg: 0.45 iter/sec \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "user 924 416.22 avg: 0.45 iter/sec \n",
      "user 925 417.12 avg: 0.45 iter/sec \n",
      "user 926 417.81 avg: 0.45 iter/sec \n",
      "user 927 417.98 avg: 0.45 iter/sec \n",
      "user 928 418.56 avg: 0.45 iter/sec \n",
      "user 929 418.98 avg: 0.45 iter/sec \n",
      "user 930 419.30 avg: 0.45 iter/sec \n",
      "user 931 419.66 avg: 0.45 iter/sec \n",
      "user 932 419.98 avg: 0.45 iter/sec \n",
      "user 933 420.11 avg: 0.45 iter/sec \n",
      "user 934 420.98 avg: 0.45 iter/sec \n",
      "user 935 421.05 avg: 0.45 iter/sec \n",
      "user 936 421.10 avg: 0.45 iter/sec \n",
      "user 937 422.37 avg: 0.45 iter/sec \n",
      "user 938 422.97 avg: 0.45 iter/sec \n",
      "user 939 423.10 avg: 0.45 iter/sec \n",
      "user 940 423.94 avg: 0.45 iter/sec \n",
      "user 941 424.66 avg: 0.45 iter/sec \n",
      "user 942 425.23 avg: 0.45 iter/sec \n",
      "user 943 425.51 avg: 0.45 iter/sec \n",
      "user 944 425.73 avg: 0.45 iter/sec \n",
      "user 945 426.13 avg: 0.45 iter/sec \n",
      "user 946 426.72 avg: 0.45 iter/sec \n",
      "user 947 426.84 avg: 0.45 iter/sec \n",
      "user 948 427.10 avg: 0.45 iter/sec \n",
      "user 949 427.62 avg: 0.45 iter/sec \n",
      "user 950 428.40 avg: 0.45 iter/sec \n",
      "user 951 428.55 avg: 0.45 iter/sec \n",
      "user 952 428.98 avg: 0.45 iter/sec \n",
      "user 953 429.41 avg: 0.45 iter/sec \n",
      "user 954 429.56 avg: 0.45 iter/sec \n",
      "user 955 430.02 avg: 0.45 iter/sec \n",
      "user 956 430.46 avg: 0.45 iter/sec \n",
      "user 957 431.05 avg: 0.45 iter/sec \n",
      "user 958 431.86 avg: 0.45 iter/sec \n",
      "user 959 432.77 avg: 0.45 iter/sec \n",
      "user 960 432.83 avg: 0.45 iter/sec \n",
      "user 961 433.05 avg: 0.45 iter/sec \n",
      "user 962 433.38 avg: 0.45 iter/sec \n",
      "user 963 434.55 avg: 0.45 iter/sec \n",
      "user 964 435.22 avg: 0.45 iter/sec \n",
      "user 965 435.52 avg: 0.45 iter/sec \n",
      "user 966 435.77 avg: 0.45 iter/sec \n",
      "user 967 436.14 avg: 0.45 iter/sec \n",
      "user 968 436.58 avg: 0.45 iter/sec \n",
      "user 969 436.62 avg: 0.45 iter/sec \n",
      "user 970 436.98 avg: 0.45 iter/sec \n",
      "user 971 437.09 avg: 0.45 iter/sec \n",
      "user 972 438.63 avg: 0.45 iter/sec \n",
      "user 973 438.88 avg: 0.45 iter/sec \n",
      "user 974 439.41 avg: 0.45 iter/sec \n",
      "user 975 439.51 avg: 0.45 iter/sec \n",
      "user 976 440.05 avg: 0.45 iter/sec \n",
      "user 977 440.24 avg: 0.45 iter/sec \n",
      "user 978 440.45 avg: 0.45 iter/sec \n",
      "user 979 440.50 avg: 0.45 iter/sec \n",
      "user 980 440.76 avg: 0.45 iter/sec \n",
      "user 981 443.25 avg: 0.45 iter/sec \n",
      "user 982 443.67 avg: 0.45 iter/sec \n",
      "user 983 443.71 avg: 0.45 iter/sec \n",
      "user 984 444.46 avg: 0.45 iter/sec \n",
      "user 985 444.86 avg: 0.45 iter/sec \n",
      "user 986 445.25 avg: 0.45 iter/sec \n",
      "user 987 445.42 avg: 0.45 iter/sec \n",
      "user 988 446.01 avg: 0.45 iter/sec \n",
      "user 989 446.34 avg: 0.45 iter/sec \n",
      "user 990 447.17 avg: 0.45 iter/sec \n",
      "user 991 447.64 avg: 0.45 iter/sec \n",
      "user 992 448.06 avg: 0.45 iter/sec \n",
      "user 993 448.08 avg: 0.45 iter/sec \n",
      "user 994 449.12 avg: 0.45 iter/sec \n",
      "user 995 449.36 avg: 0.45 iter/sec \n",
      "user 996 449.41 avg: 0.45 iter/sec \n",
      "user 997 449.72 avg: 0.45 iter/sec \n",
      "user 998 450.15 avg: 0.45 iter/sec \n",
      "user 999 450.43 avg: 0.45 iter/sec \n",
      "user 1000 450.80 avg: 0.45 iter/sec \n",
      "user 1001 450.84 avg: 0.45 iter/sec \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n5rvWzXyfAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f775c0d73c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76955031d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f77265dc7f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n+EX0/8v4j5rfKZWIeCIi7i62n5P0gKSpynvOERHbi92u4hbKeM6SZHuapLdJurZmOOs5DyHZnKtW\n7lMlbazZ31SM5eToiHii2P6NpKOL7aHmPrXYrh8vNdszJf2B+q9ks55zsTyxStIWSbdHRPZzlvQF\nSX8raXfNWO5zDkk/tL3S9sJiLNmc+Q7VEouIsJ3dy5lsHybpu5I+FhHP1i4p5jjniNgl6fW2D5d0\no+2T645nNWfbF0raEhErbZ832Dm5zblwdkRstn2UpNttP1h7cLTnXLUr982SptfsTyvGcvJk8aeZ\nip9bivGh5r652K4fLyXbXeov9m9ExPeK4aznvEdEPCPpDknzlPec/1DSn9reoP6l0zfa/i/lPWdF\nxObi5xZJN6p/GTnZnKtW7iskzbY9y/ZYSQskLU2cqdWWSnp/sf1+STfVjC+wPc72LEmzJd1V/Mn3\nrO0zi2fV31fzO6VS5Ps3SQ9ExOdrDuU85+7iil22J0g6X9KDynjOEXF5REyLiJnq/2/0fyLiz5Xx\nnG0fanvinm1Jb5a0WinnnPoZ5gO9SXqr+l9l8YikK1LnOci53CDpCUkvq39t7S8kHSnpR5IelvRD\nSUfUnH9FMe+1qnkGXVJP8Q/pEUlfUvHmtLLdJJ2t/nXJ+yStKm5vzXzOp0i6p5jzakmfLMaznXPd\n/M/TvlfLZDtn9b+C797itmZPN6WcM+9QBYAMVW1ZBgDQBModADJEuQNAhih3AMgQ5Q4AGaLcASBD\nlDsAZIhyB4AM/T8XNFUCWY8HlQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f77265dc6d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f77265dca20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "initial_theta = np.random.random_sample(1000)/10\n",
    "alpha = 0.01\n",
    "iterations = 5000\n",
    "w=10 ### JAKI WYKŁADNIK W GRADIENCIE???\n",
    "results=aprun(bar='txt')(delayed(Estimate_theta)(df,i,initial_theta[i],alpha,iterations,w) for i in range(1000))\n",
    "est_theta=[]\n",
    "cost=[]\n",
    "hist_theta=[]\n",
    "gradient=[]\n",
    "for i in range(1000):\n",
    "    est_theta.append(results[i][0][100])\n",
    "    hist_theta.append(results[i][0])\n",
    "    cost.append(results[i][1])\n",
    "    gradient.append(results[i][2])\n",
    "plt.plot([np.abs(x - init_Theta)/ init_Theta for x in est_theta],'bo')\n",
    "plt.show()\n",
    "plt.plot(np.mean(np.array(cost), axis=0))\n",
    "plt.show()\n",
    "dop_theta=[]\n",
    "for i in range(1000):\n",
    "    dop_theta.append([np.abs(x - init_Theta)/ init_Theta for x in hist_theta[i]])\n",
    "plt.plot(np.mean(np.array(dop_theta), axis=0))\n",
    "plt.show()\n",
    "for i in range(1000):\n",
    "    mini=min(dop_theta[i])\n",
    "    maxi=max(dop_theta[i])\n",
    "    dop_theta[i]=[(x-mini)/(maxi-mini) for x in dop_theta[i]]\n",
    "plt.plot(np.mean(np.array(dop_theta), axis=0))\n",
    "plt.show()\n",
    "plt.plot(np.mean(np.array(gradient), axis=0)[1:])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f769556c550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(np.array(cost)[:,98])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Wykres masymalnego w / liczba aktywnych kampanii na koniec procesu dla wszystkich użytkowników"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4890fac08121422c8856f5388620ac4a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/html": [
       "<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
       "<p>\n",
       "  If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n",
       "  that the widgets JavaScript is still loading. If this message persists, it\n",
       "  likely means that the widgets JavaScript library is either not installed or\n",
       "  not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
       "  Widgets Documentation</a> for setup instructions.\n",
       "</p>\n",
       "<p>\n",
       "  If you're reading this message in another notebook frontend (for example, a static\n",
       "  rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
       "  it may mean that your frontend doesn't currently support widgets.\n",
       "</p>\n"
      ],
      "text/plain": [
       "HBox(children=(IntProgress(value=0, max=10000), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:3: RuntimeWarning: divide by zero encountered in true_divide\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n",
      "/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:3: RuntimeWarning: invalid value encountered in true_divide\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76be6d4160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tmp=[]\n",
    "for i in tqdm(range(df['user'].max()+1)):\n",
    "    tmp.append(sum(indykatory[N][i,:])/Y[i])\n",
    "plt.plot(tmp,'bo')\n",
    "del tmp"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Różnica pomiędzy liczbą aktywacji z indykatorów, a licznikiem aktywacji"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "9f836882fd7d4a998a383cadc462ffc4",
       "version_major": 2,
       "version_minor": 0
      },
      "text/html": [
       "<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
       "<p>\n",
       "  If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n",
       "  that the widgets JavaScript is still loading. If this message persists, it\n",
       "  likely means that the widgets JavaScript library is either not installed or\n",
       "  not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
       "  Widgets Documentation</a> for setup instructions.\n",
       "</p>\n",
       "<p>\n",
       "  If you're reading this message in another notebook frontend (for example, a static\n",
       "  rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
       "  it may mean that your frontend doesn't currently support widgets.\n",
       "</p>\n"
      ],
      "text/plain": [
       "HBox(children=(IntProgress(value=0, max=10000), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAD8CAYAAACRkhiPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEJFJREFUeJzt3X+onuV9x/H3p9FZsZUqnoU0CYuFrBCFRjykgmV0lda0\nlsXCkAhT/3CmoC2WFUbsP23/CPjHaodjCukUI2srAVsMVTvSTChCNT261JhYZ6gRc4jmtKVY/3GY\nfvfHuVyfnZ70/D5PPdf7BTfP9Xzv+7rv6yIkn+f+8TxJVSFJ6tN7hj0ASdLwGAKS1DFDQJI6ZghI\nUscMAUnqmCEgSR0zBCSpY4aAJHXMEJCkjp017AHM5KKLLqoNGzYMexiS9K7yzDPP/LKqRmba7k8+\nBDZs2MDY2NiwhyFJ7ypJXpnNdl4OkqSOGQKS1DFDQJI6ZghIUscMAUnqmCEgSR0zBCSpY4aAJHXM\nEJCkjv3Jf2NYmsmGnY8O5bjH77xmKMeFPuespeGZgCR1zBCQpI7NGAJJ3pvkYJKfJTmS5OutfmGS\n/Uleaq8XDPS5I8mxJC8muXqgfnmSw23d3UmyNNOSJM3GbM4E3gI+UVUfATYDW5NcAewEDlTVRuBA\ne0+STcB24BJgK3BPklVtX/cCtwAb27J1EeciSZqjGUOgJr3Z3p7dlgK2AXtafQ9wbWtvAx6qqreq\n6mXgGLAlyRrg/Kp6qqoKeHCgjyRpCGZ1TyDJqiSHgFPA/qp6GlhdVSfbJq8Bq1t7LfDqQPcTrba2\ntafWJUlDMqsQqKrTVbUZWMfkp/pLp6wvJs8OFkWSHUnGkoxNTEws1m4lSVPM6emgqvoN8AST1/Jf\nb5d4aK+n2mbjwPqBbutabby1p9anO87uqhqtqtGRkRn/dzRJ0jzN5umgkSQfaO1zgU8CPwf2ATe1\nzW4CHmntfcD2JOckuZjJG8AH26WjN5Jc0Z4KunGgjyRpCGbzjeE1wJ72hM97gL1V9YMkPwH2JrkZ\neAW4DqCqjiTZCxwF3gZuq6rTbV+3Ag8A5wKPt0WSNCQzhkBVPQdcNk39V8BVZ+izC9g1TX0MuPQP\ne0iShsFvDEtSxwwBSeqYISBJHTMEJKljhoAkdcwQkKSOGQKS1DFDQJI6ZghIUscMAUnqmCEgSR0z\nBCSpY4aAJHXMEJCkjhkCktQxQ0CSOmYISFLHDAFJ6pghIEkdMwQkqWOGgCR1zBCQpI4ZApLUMUNA\nkjpmCEhSx2YMgSTrkzyR5GiSI0lub/WvJRlPcqgtnxnoc0eSY0leTHL1QP3yJIfburuTZGmmJUma\njbNmsc3bwJer6tkk7weeSbK/rftmVf3T4MZJNgHbgUuADwI/SvKXVXUauBe4BXgaeAzYCjy+OFOR\nJM3VjGcCVXWyqp5t7d8CLwBr/0iXbcBDVfVWVb0MHAO2JFkDnF9VT1VVAQ8C1y54BpKkeZvTPYEk\nG4DLmPwkD/DFJM8luT/JBa22Fnh1oNuJVlvb2lPr0x1nR5KxJGMTExNzGaIkaQ5mHQJJ3gc8DHyp\nqt5g8tLOh4DNwEngG4s1qKraXVWjVTU6MjKyWLuVJE0xqxBIcjaTAfDtqvoeQFW9XlWnq+p3wLeA\nLW3zcWD9QPd1rTbe2lPrkqQhmc3TQQHuA16oqrsG6msGNvsc8Hxr7wO2JzknycXARuBgVZ0E3khy\nRdvnjcAjizQPSdI8zObpoCuBG4DDSQ612leA65NsBgo4DnweoKqOJNkLHGXyyaLb2pNBALcCDwDn\nMvlUkE8GSdIQzRgCVfUkMN3z/I/9kT67gF3T1MeAS+cyQEnS0vEbw5LUMUNAkjpmCEhSxwwBSeqY\nISBJHTMEJKljhoAkdcwQkKSOGQKS1DFDQJI6ZghIUscMAUnqmCEgSR0zBCSpY4aAJHXMEJCkjhkC\nktQxQ0CSOmYISFLHDAFJ6pghIEkdMwQkqWOGgCR1zBCQpI7NGAJJ1id5IsnRJEeS3N7qFybZn+Sl\n9nrBQJ87khxL8mKSqwfqlyc53NbdnSRLMy1J0mzM5kzgbeDLVbUJuAK4LckmYCdwoKo2Agfae9q6\n7cAlwFbgniSr2r7uBW4BNrZl6yLORZI0RzOGQFWdrKpnW/u3wAvAWmAbsKdttge4trW3AQ9V1VtV\n9TJwDNiSZA1wflU9VVUFPDjQR5I0BHO6J5BkA3AZ8DSwuqpOtlWvAatbey3w6kC3E622trWn1qc7\nzo4kY0nGJiYm5jJESdIczDoEkrwPeBj4UlW9MbiufbKvxRpUVe2uqtGqGh0ZGVms3UqSpphVCCQ5\nm8kA+HZVfa+VX2+XeGivp1p9HFg/0H1dq4239tS6JGlIZvN0UID7gBeq6q6BVfuAm1r7JuCRgfr2\nJOckuZjJG8AH26WjN5Jc0fZ540AfSdIQnDWLba4EbgAOJznUal8B7gT2JrkZeAW4DqCqjiTZCxxl\n8smi26rqdOt3K/AAcC7weFskSUMyYwhU1ZPAmZ7nv+oMfXYBu6apjwGXzmWAkqSl4zeGJaljhoAk\ndcwQkKSOGQKS1DFDQJI6NptHRPUusmHno0M57vE7rxnKcSUtjGcCktQxQ0CSOmYISFLHDAFJ6pgh\nIEkdMwQkqWOGgCR1zBCQpI4ZApLUMUNAkjpmCEhSxwwBSeqYISBJHTMEJKljhoAkdcwQkKSOGQKS\n1DFDQJI6NmMIJLk/yakkzw/UvpZkPMmhtnxmYN0dSY4leTHJ1QP1y5McbuvuTpLFn44kaS5mcybw\nALB1mvo3q2pzWx4DSLIJ2A5c0vrck2RV2/5e4BZgY1um26ckaRnNGAJV9WPg17Pc3zbgoap6q6pe\nBo4BW5KsAc6vqqeqqoAHgWvnO2hJ0uJYyD2BLyZ5rl0uuqDV1gKvDmxzotXWtvbUuiRpiOYbAvcC\nHwI2AyeBbyzaiIAkO5KMJRmbmJhYzF1LkgbMKwSq6vWqOl1VvwO+BWxpq8aB9QObrmu18daeWj/T\n/ndX1WhVjY6MjMxniJKkWThrPp2SrKmqk+3t54B3nhzaB3wnyV3AB5m8AXywqk4neSPJFcDTwI3A\nvyxs6JJ6sWHno0M79vE7rxnasZfDjCGQ5LvAx4GLkpwAvgp8PMlmoIDjwOcBqupIkr3AUeBt4Laq\nOt12dSuTTxqdCzzeFknSEM0YAlV1/TTl+/7I9ruAXdPUx4BL5zQ6SdKS8hvDktQxQ0CSOmYISFLH\nDAFJ6pghIEkdMwQkqWOGgCR1zBCQpI4ZApLUMUNAkjpmCEhSxwwBSeqYISBJHTMEJKljhoAkdcwQ\nkKSOGQKS1DFDQJI6ZghIUscMAUnqmCEgSR0zBCSpY4aAJHXMEJCkjs0YAknuT3IqyfMDtQuT7E/y\nUnu9YGDdHUmOJXkxydUD9cuTHG7r7k6SxZ+OJGkuZnMm8ACwdUptJ3CgqjYCB9p7kmwCtgOXtD73\nJFnV+twL3AJsbMvUfUqSltmMIVBVPwZ+PaW8DdjT2nuAawfqD1XVW1X1MnAM2JJkDXB+VT1VVQU8\nONBHkjQk870nsLqqTrb2a8Dq1l4LvDqw3YlWW9vaU+uSpCFa8I3h9sm+FmEs/yfJjiRjScYmJiYW\nc9eSpAHzDYHX2yUe2uupVh8H1g9st67Vxlt7an1aVbW7qkaranRkZGSeQ5QkzWS+IbAPuKm1bwIe\nGahvT3JOkouZvAF8sF06eiPJFe2poBsH+kiShuSsmTZI8l3g48BFSU4AXwXuBPYmuRl4BbgOoKqO\nJNkLHAXeBm6rqtNtV7cy+aTRucDjbZEkDdGMIVBV159h1VVn2H4XsGua+hhw6ZxGJ0laUn5jWJI6\nZghIUscMAUnqmCEgSR0zBCSpY4aAJHXMEJCkjhkCktQxQ0CSOmYISFLHDAFJ6pghIEkdMwQkqWOG\ngCR1zBCQpI4ZApLUMUNAkjpmCEhSxwwBSeqYISBJHTMEJKljhoAkdcwQkKSOGQKS1DFDQJI6tqAQ\nSHI8yeEkh5KMtdqFSfYneam9XjCw/R1JjiV5McnVCx28JGlhFuNM4K+ranNVjbb3O4EDVbURONDe\nk2QTsB24BNgK3JNk1SIcX5I0T0txOWgbsKe19wDXDtQfqqq3qupl4BiwZQmOL0mapYWGQAE/SvJM\nkh2ttrqqTrb2a8Dq1l4LvDrQ90Sr/YEkO5KMJRmbmJhY4BAlSWdy1gL7f6yqxpP8ObA/yc8HV1ZV\nJam57rSqdgO7AUZHR+fcX5I0OwsKgaoab6+nknyfycs7rydZU1Unk6wBTrXNx4H1A93XtdqS2bDz\n0aXc/Rkdv/OaoRxXkuZq3peDkpyX5P3vtIFPAc8D+4Cb2mY3AY+09j5ge5JzklwMbAQOzvf4kqSF\nW8iZwGrg+0ne2c93quqHSX4K7E1yM/AKcB1AVR1Jshc4CrwN3FZVpxc0eknSgsw7BKrqF8BHpqn/\nCrjqDH12Abvme0xJ0uLyG8OS1DFDQJI6ZghIUscMAUnqmCEgSR0zBCSpY4aAJHXMEJCkjhkCktQx\nQ0CSOmYISFLHDAFJ6pghIEkdMwQkqWOGgCR1zBCQpI4ZApLUMUNAkjpmCEhSxwwBSeqYISBJHTME\nJKljhoAkdcwQkKSOLXsIJNma5MUkx5LsXO7jS5J+b1lDIMkq4F+BTwObgOuTbFrOMUiSfm+5zwS2\nAMeq6hdV9T/AQ8C2ZR6DJKk5a5mPtxZ4deD9CeCjyzwGSZq1DTsfHcpxj995zbIcJ1W1LAcCSPK3\nwNaq+vv2/gbgo1X1hSnb7QB2tLcfBl6c5yEvAn45z77vVs65D73Nubf5wsLn/BdVNTLTRst9JjAO\nrB94v67V/p+q2g3sXujBkoxV1ehC9/Nu4pz70Nuce5svLN+cl/uewE+BjUkuTvJnwHZg3zKPQZLU\nLOuZQFW9neQLwH8Aq4D7q+rIco5BkvR7y305iKp6DHhsmQ634EtK70LOuQ+9zbm3+cIyzXlZbwxL\nkv60+LMRktSxFRkCPf40RZL7k5xK8vywx7IckqxP8kSSo0mOJLl92GNaaknem+Rgkp+1OX992GNa\nLklWJfmvJD8Y9liWQ5LjSQ4nOZRkbEmPtdIuB7Wfpvhv4JNMfhntp8D1VXV0qANbYkn+CngTeLCq\nLh32eJZakjXAmqp6Nsn7gWeAa1fyn3OSAOdV1ZtJzgaeBG6vqqeGPLQll+QfgFHg/Kr67LDHs9SS\nHAdGq2rJvxuxEs8Euvxpiqr6MfDrYY9juVTVyap6trV/C7zA5DfSV6ya9GZ7e3ZbVtanuGkkWQdc\nA/zbsMeyEq3EEJjupylW9D8OvUuyAbgMeHq4I1l67bLIIeAUsL+qVvycgX8G/hH43bAHsowK+FGS\nZ9ovKCyZlRgC6kiS9wEPA1+qqjeGPZ6lVlWnq2ozk9+235JkRV/6S/JZ4FRVPTPssSyzj7U/508D\nt7XLvUtiJYbArH6aQu9+7br4w8C3q+p7wx7Pcqqq3wBPAFuHPZYldiXwN+0a+UPAJ5L8+3CHtPSq\nary9ngK+z+Rl7iWxEkPAn6boQLtJeh/wQlXdNezxLIckI0k+0NrnMvnww8+HO6qlVVV3VNW6qtrA\n5N/l/6yqvxvysJZUkvPaww4kOQ/4FLBkT/2tuBCoqreBd36a4gVgbw8/TZHku8BPgA8nOZHk5mGP\naYldCdzA5CfDQ235zLAHtcTWAE8keY7JDzv7q6qLRyY7sxp4MsnPgIPAo1X1w6U62Ip7RFSSNHsr\n7kxAkjR7hoAkdcwQkKSOGQKS1DFDQJI6ZghIUscMAUnqmCEgSR37X0K1maq70hpMAAAAAElFTkSu\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76b4e178d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD8CAYAAABXe05zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADuBJREFUeJzt3V2MXPV5x/Hvg18ga9PytoowYC9IUSUUKRBWBEoURRha\nQlFy0wsi06ZSK1+0lUhbKQL5IuqFL1pVUVS1amOFtFHtQCihLUKJUnCQoqoSyTqhCWBoSLAdbFIv\nlDeDhA08vZhjMrhr78zuOTvzjL8faTRnzvzPf55nxv7t7DlndiIzkSTVccaoC5AkDcfglqRiDG5J\nKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKmZ1F5NecMEFOTMz08XUkjSR9uzZ80JmTg8ytpPg\nnpmZYW5uroupJWkiRcT+Qce6q0SSijG4JakYg1uSijG4JakYg1uSihkouCNiX0T8OCIeiwhPF+nY\nrl0wMwNnnNG73rVr1BVNhirPa5U6+42q5uU+7lK2H4vXJzMXvQD7gAsGGZuZXHXVVaml2bkzc2oq\nE355mZrqrdfSVXleq9TZb1Q1L/dxl7J9l70CczlgxkYO8NVlEbEPmM3MFwb5YTA7O5uex700MzOw\nf4GzOTdtgn37VrqayVHlea1SZ79R1bzcx13K9l32GhF7MnN2oLEDBvezwCvA28CXMnPHAmO2AlsB\nNm7ceNX+hbrTos44o/dz/EQR8M47K1/PpKjyvFaps9+oal7u4y5l+y57HSa4Bz04+dHMvAL4BPBH\nEfGxEwdk5o7MnM3M2enpgT61qQVs3Djceg2myvNapc5+o6p5uY+7lO3H5fUZKLgz82BzfRj4F+Dq\nLos6nW3fDlNT7103NdVbr6Wr8rxWqbPfqGpe7uMuZfuxeX0W2wkOrAPO7lv+T+CmU23jwcnl2bkz\nc9OmzIje9TgfmKqkyvNapc5+o6p5uY+7lO276pU2D05GxGX03mVD749SfS0zT/nzxYOTkjScYfZx\nL/rXATPzZ8CHll2VJKkVfnJSkooxuCWpGINbkooxuCWpGINbkooxuCWpGINbkooxuCWpGINbkoox\nuCWpGINbkooxuCWpGINbkooxuCWpGINbkooxuCWpGINbkooxuCWpGINbkooxuCWpGINbkooxuCWp\nGINbkooxuCWpGINbkooxuCWpGINbkooxuCWpGINbkooxuCWpmIGDOyJWRcQPI+LBLguSJJ3a6iHG\n3g7sBX6li0J27YJt22D//i5ml6SVs3kzPPxwd/MP9I47Ii4Gfgv4chdF7NoFW7ca2pImw+7dcMMN\n3c0/6K6SLwKfA97pooht2+CNN7qYWZJGY/fu7uZeNLgj4hbgcGbuWWTc1oiYi4i5+fn5oYo4cGCo\n4ZJ0WhvkHfd1wCcjYh9wD3B9ROw8cVBm7sjM2cycnZ6eHqqIjRuHGi5Jp7VFgzsz78zMizNzBrgV\n+E5m3tZmEdu3w9RUmzNK0mht3tzd3GNxHveWLbBjB2zaNOpKJGn5uj6rJDKz9UlnZ2dzbm6u9Xkl\naVJFxJ7MnB1k7Fi845YkDc7glqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRi\nDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5J\nKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKmb1YgMi4izgu8CZzfj7MvPzbRey\naxfcdlvbs0rSyluzBo4e7W7+Qd5xvwlcn5kfAq4AboqIa9oswtCWNEmOHYO1a7ubf9F33JmZwJHm\n5prmkm0WsW1bm7NJ0ugdO9bd3APt446IVRHxGHAYeCgzH11gzNaImIuIufn5+aGKOHBgqOGSdFob\nKLgz8+3MvAK4GLg6Ij64wJgdmTmbmbPT09NDFbFx41DDJem0NtRZJZn5MvAIcFObRWzf3uZskjR6\na9Z0N/eiwR0R0xFxTrP8PuBG4Kk2i9iyBXbubHNGSRqdrs8qWfTgJHAh8NWIWEUv6O/NzAfbLmTL\nlt5FknRqg5xV8iPgyhWoRZI0AD85KUnFGNySVIzBLUnFGNySVIzBLUnFGNySVIzBLUnFGNySVIzB\nLUnFGNySVIzBLUnFGNySVIzBLUnFGNySVIzBLUnFGNySVIzBLUnFGNySVIzBLUnFGNySVIzBLUnF\nGNySVIzBLUnFGNySVIzBLUnFGNySVIzBLUnFGNySVIzBLUnFGNySVMyiwR0Rl0TEIxHxZEQ8ERG3\nr0RhkqSFrR5gzFvAn2XmDyLibGBPRDyUmU+2WcjatXDsWJszStJobNgABw92N/+i77gz8/nM/EGz\n/BqwF7iozSIMbUmT5NAhuKjVlHyvofZxR8QMcCXwaJtFGNqSJs2hQ93NPXBwR8R64BvAZzPz1QXu\n3xoRcxExNz8/32aNkqQ+AwV3RKyhF9q7MvP+hcZk5o7MnM3M2enp6TZrlCT1GeSskgDuAvZm5he6\nKGLNmi5mlaTR2bChu7kHecd9HfA7wPUR8VhzubnNIo4eNbwlTY6uzypZ9HTAzPwPILoroefo0a4f\nQZImg5+clKRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5J\nKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbg\nlqRiDG5JKsbglqRiDG5JKsbglqRiDG5JKsbglqRiVi82ICK+AtwCHM7MD3ZVSERXM0vSytqwAQ4e\n7G7+Qd5x/yNwU3clGNqSJsuhQ3DRRd3Nv2hwZ+Z3gf/trgRJmjyHDnU3d2v7uCNia0TMRcTc/Px8\nW9NKkk7QWnBn5o7MnM3M2enp6bamlSSdwLNKJKkDGzZ0N/dYBHfmqCuQpPZ0fVbJIKcD3g18HLgg\nIp4DPp+Zd7VdiOEtSYNZNLgz89MrUYgkaTBjsatEkjQ4g1uSijG4JakYg1uSijG4JakYg1uSijG4\nJakYg1uSijG4JakYg1uSijG4JakYg1uSijG4JakYg1uSijG4JakYg1uSijG4JakYg1uSijG4JakY\ng1uSijG4JakYg1uSijG4JakYg1uSijG4JakYg1uSijG4JakYg1uSijG4JakYg1uSihkouCPipoh4\nOiKeiYg7ui5KknRyqxcbEBGrgL8FbgSeA74fEQ9k5pNtF3PuufDyy23POvlWr4a33hp1FSsvAtau\nhTffbG++zHbmasu6dXDsGBw9uvx5AF5/feH716+HI0fG5zlYbh3r18NHPgK7dy9vjtdfh/POg9de\nW/w1WLUK3n4bNm2C7dthy5alP/ZiFg1u4Grgmcz8GUBE3AN8Cmg1uA3tpTsdQxt6/7HbCu3j842b\nkwVt2/McOdK7HpfnYLl1HDmyvNA+PgfAiy8ONv7tt3vX+/fD1q295a7Ce5BdJRcBP++7/VyzrlWG\ntqRJ8cYbsG1bd/O3dnAyIrZGxFxEzM3Pz7c1rSSVdOBAd3MPEtwHgUv6bl/crHuPzNyRmbOZOTs9\nPd1WfZJU0saN3c09SHB/H/hARFwaEWuBW4EH2i7knHPanlGSRmNqqneAsiuLBndmvgX8MfBtYC9w\nb2Y+0XYhL71keC/V6kEOMU+gCDjzzHbnGzfr1vXOnGljnuNnlixk/fre9bg8B8utY/162Lx5+XNE\nwPnnD/YarFrVu960CXbsGP1ZJWTmN4FvdldGz0svdf0IklSfn5yUpGIMbkkqxuCWpGIMbkkqxuCW\npGIiO/jjBBExD+xf4uYXAC+0WE4F9jz5Trd+wZ6HtSkzB/r0YifBvRwRMZeZs6OuYyXZ8+Q73foF\ne+6Su0okqRiDW5KKGcfg3jHqAkbAniff6dYv2HNnxm4ftyTp1MbxHbck6RTGJrgn6QuJI+KSiHgk\nIp6MiCci4vZm/XkR8VBE/KS5Prdvmzub3p+OiN/sW39VRPy4ue+vI8bl77f9fxGxKiJ+GBEPNrcn\nvd9zIuK+iHgqIvZGxLWnQc9/0vybfjwi7o6Isyat54j4SkQcjojH+9a11mNEnBkRX2/WPxoRM0MX\nmZkjvwCrgJ8ClwFrgf8CLh91Xcvo50Lgw83y2cB/A5cDfwnc0ay/A/iLZvnypuczgUub52JVc9/3\ngGuAAL4FfGLU/Z2i7z8FvgY82Nye9H6/CvxBs7wWOGeSe6b3lYXPAu9rbt8L/N6k9Qx8DPgw8Hjf\nutZ6BP4Q+Ptm+Vbg60PXOOonqSn+WuDbfbfvBO4cdV0t9vdvwI3A08CFzboLgacX6pfe3z6/thnz\nVN/6TwNfGnU/J+nxYmA3cH1fcE9yv7/ahFicsH6Sez7+/bPn0fuT0A8CvzGJPQMzJwR3az0eH9Ms\nr6b3gZ0Ypr5x2VWyIl9IPArNr0FXAo8C78/M55u7fgG8v1k+Wf8XNcsnrh9HXwQ+B7zTt26S+70U\nmAf+odk99OWIWMcE95yZB4G/Ag4AzwOvZOa/M8E992mzx3e3yd4X1bwCnD9MMeMS3BMpItYD3wA+\nm5mv9t+XvR+3E3FKT0TcAhzOzD0nGzNJ/TZW0/t1+u8y80rgdXq/Qr9r0npu9ut+it4PrQ3Auoi4\nrX/MpPW8kHHocVyCe6AvJK4kItbQC+1dmXl/s/p/IuLC5v4LgcPN+pP1f7BZPnH9uLkO+GRE7APu\nAa6PiJ1Mbr/Qewf1XGY+2ty+j16QT3LPNwDPZuZ8Zh4D7gd+ncnu+bg2e3x3m4hYTW+324vDFDMu\nwb0iX0i8Upqjx3cBezPzC313PQB8pln+DL1938fX39ocbb4U+ADwveZXs1cj4ppmzt/t22ZsZOad\nmXlxZs7Qe+2+k5m3MaH9AmTmL4CfR8SvNas2A08ywT3T20VyTURMNbVupvc9tJPc83Ft9tg/12/T\n+/8y3Dv4UR8E6Nt5fzO9sy9+CmwbdT3L7OWj9H6V+hHwWHO5md5+rN3AT4CHgfP6ttnW9P40fUfY\ngVng8ea+v2HIgxgj6P3j/PLg5ET3C1wBzDWv878C554GPf858FRT7z/RO5tionoG7qa3D/8Yvd+s\nfr/NHoGzgH8GnqF35sllw9boJyclqZhx2VUiSRqQwS1JxRjcklSMwS1JxRjcklSMwS1JxRjcklSM\nwS1Jxfwf4vNJzVAbYIcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f76bec8b2b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tmp=[]\n",
    "for i in tqdm(range(n)):\n",
    "    tmp.append(sum(np.logical_xor(indykatory[N][i,:],indykatory[0][i,:]))-Y[i][0])\n",
    "    #if sum(np.logical_xor(indykatory[N][i,:],indykatory[0][i,:]))-Y[i][0]<0:\n",
    "     #   print(i)\n",
    "plt.hist(tmp)\n",
    "plt.show()\n",
    "plt.plot(tmp,'bo')\n",
    "plt.show()\n",
    "del tmp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
